我目前正在学习 Google 网络安全 Coursera 认证课程。我现在在 Linux 部分,正在学习一些 Linux 命令,我对它完全陌生,但有一件事我很疑惑。在学习过程中,我总是试图思考防御者或攻击者可能会如何使用该命令,最近我了解了该echo >
命令以及它如何覆盖所有内容。我确实检查过它可以被恶意使用,但我当然没有完全理解它。
我的问题是,假设攻击者可以访问某人的计算机,并想快速对用户造成一些损害,因为他知道该用户拥有许多.txt
文件。此命令有效吗?
find /home/ -name "*.txt*" | echo "gg" > "*.txt*"
只是想知道我是否理解正确。这是否基本上会创建一个命令来查找.txt
下的所有文件/home/
,然后通过管道用单词echo
覆盖所有文件?.txt
gg
如果不是,为什么它不起作用?我想知道为什么它不起作用,以帮助我更好地理解它,如果这个想法在技术上可行,但命令写错了,请告诉我哪部分是错误的。
答案1
它不会工作:echo
不从管道接收参数。find
将找到所有.txt
文件并将其通过管道传输到echo
。但echo
会忽略它并仅输出gg
。
>
*.txt*
如果您有权限,redirect 将尝试将其写入名为的文件。如果该文件存在,它将被覆盖,如果不存在,它将被创建。
答案2
由于 ThoriumBR 已经解释过的原因,这种方法行不通。
你正在寻找类似
shopt -s globstar
for file in **/*.txt
do
echo "rr" > "$file"
done
或者
find . -name "*.txt" -print0 | while read -d $'\0' file
do
echo "rr" > "$file"
done