オンラインでいくつかのCTFの課題を解決しているときに、サーバーをブルートフォースする必要がある状況に遭遇しました。これは私が書いたコードです:
#!/bin/bash
for i in {0..9}{0..9}{0..9}{0..9}
do
echo "Now trying code.."
echo $i
echo "a fixed string" $i | nc localhost *port here* >> /tmp/me/dump.txt
done
これは、信じられないほど、非常に遅いものでした。1000〜9999の組み合わせを試す必要があり、10回の試行ごとに約5秒かかりました。次に、アドバイスに従って、この行の最後に「&」を付けます。
echo "a fixed string" $i | nc localhost *port here* >> /tmp/me/dump.txt &
そして、数秒で数百の組み合わせを試しました。とても驚いた。誰かが私にロジックを説明できますか?「&」は何をしましたか?
for i in {1000..9999}
wait
ただし、最後にa を含める必要があります。
nc -z localhost 1000-2000
か?
&
コマンドをバックグラウンドで実行します、それだけです。速くも何もしませんでした。使用しているシェル(bashと想定)のマニュアルを読んでください。