
私は現在、Google サイバーセキュリティ Coursera 認定コースを受講しています。現在 Linux セクションにいて、Linux コマンドをいくつか学習しています。まったくの初心者ですが、1 つ疑問に思っていることがあります。学習中は常に、防御側または攻撃側がこのコマンドをどのように使用するかを考えるようにしています。最近、echo >
コマンドについて、そしてそれがすべてを上書きする方法を学びました。悪意を持って使用される可能性があることは確認しましたが、もちろん完全に理解したわけではありません。
私の質問は、攻撃者が誰かのコンピュータにアクセスし、そのユーザーが多数の.txt
ファイルを持っていることを知りながら、すぐに何らかの損害を与えたいと考えているとします。このコマンドは機能するでしょうか?
find /home/ -name "*.txt*" | echo "gg" > "*.txt*"
.txt
私がこれを正しく理解しているかどうか疑問に思っています。これは基本的に、の下にあるすべてのファイルを検索し/home/
、パイプを使用してすべてのファイルを単語でecho
上書きするコマンドを作成するのでしょうか?.txt
gg
そうでない場合、なぜ正確に動作しないのでしょうか? 理解を深めるために、なぜ動作しないのかを理解したいと思います。また、アイデアは技術的には機能するが、コマンドが間違って記述されている場合は、どの部分が間違っているのか教えてください。
答え1
動作しません:echo
パイプからパラメータを受信しません。find
はすべてのファイルを検索し.txt
、それを にパイプしますecho
。 しかし、echo
それを無視して のみを出力しますgg
。
>
リダイレクトは、権限がある場合に、指定されたファイルに書き込もうとします*.txt*
。存在する場合は上書きされ、存在しない場合は作成されます。
答え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