level24->level25
Level Goal
A daemon is listening on port 30002 and will give you the password for bandit25 if given the password for bandit24 and a secret numeric 4-digit pincode. There is no way to retrieve the pincode except by going through all of the 10000 combinations, called brute-forcing.
You do not need to create new connections each time
브루트 포싱 코드를 작성하여, bandit24비밀번호 + 숫자 4자리 핀코드를 브루트 포싱하면 된다.
30002번 포트로 연결하는, VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar0000~9999
로 코드를 작성해 보자.
우선
nc [localhost](http://localhost) 30002
로 연결해서 작동 되는지 확인해 보았다.
그랬더니 힌트로, bandit24 비밀번호 0000~9999 이렇게 사이에 빈칸을 두어야 한다고 한다.
VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar 0000~9999
그러면 우선 코드를 작성할 권한이 있는 디렉터리로 이동한다.
mkdir /tmp/bandit25_code/
cd /tmp/bandit25_code/
nano code.sh
#!/bin/bash
pass="VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar"
for i in {0000..9999}; do
echo "$pass $i"
done > /tmp/bandit25_code/passwd
./code.sh
로 스크립트 실행.
cat passwd
로 잘 생성 되었는지 확인.
이렇게 패스워드가 생성됨.
cat passwd | nc [localhost](http://localhost) 30002
위의 명령으로 30002번 포트 로컬 호스트에 연결. 저장된 passwd의 패스워드를 브루트 포싱으로 전부 대입.
근데, 그냥 위의 cat passwd | nc [localhost](http://localhost) 30002
명령으로 돌리니까 가상 PC가 멈춘다… 트래픽이 너무 많아서 인듯ㅠㅠ
cat passwd | nc -i 1 localhost 30002
그래서 많이 느리지만…. -i 옵션으로 interval 1초를 주었다.
너무 한참 걸린다….그래서 아래와 같이 sleep 시간을 짧게 하도록 스크립트를 작성해 보았다.
#!/bin/bash
pass="VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar"
count=0
found=false
while IFS= read -r line; do
if [[ $found == true ]]; then
if [[ $count -lt 10 ]]; then
echo "$line"
else
break
fi
fi
echo "$line" | nc localhost 30002
if [[ $line == *"Correct"* ]]; then
found=true
fi
count=$((count+1))
sleep 0.1 # 0.1초 대기
done
wait
아…근데 이것도 0.1초마다 아예 재연결이라서 이것도 중간에 끊긴다….
하다가 끊기네…ㅠㅠ
3000 개씩 잘라서 해보자…다음과 같이 스크립트를 3개로 만들고 실행.
#!/bin/bash
pass="VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar"
for i in {0000..3333}; do
echo "$pass $i"
done > /tmp/bandit25_code/passwd1
#!/bin/bash
pass="VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar"
for i in {3334..6666}; do
echo "$pass $i"
done > /tmp/bandit25_code/passwd2
#!/bin/bash
pass="VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar"
for i in {6667..9999}; do
echo "$pass $i"
done > /tmp/bandit25_code/passwd3
위와 같이 실행하여 passwd1, passwd2, passwd3 을 만들고 실행한다.
cat passwd1 | nc [localhost](http://localhost) 30002
cat passwd2 | nc [localhost](http://localhost) 30002
cat passwd3 | nc [localhost](http://localhost) 30002
저의 경우 cat passwd3 | nc [localhost](http://localhost) 30002
까지 실행했을 때 다음과 같이 나타났다.
비밀번호: p7TaowMYrmu23Ol8hiZh9UvD0O9hpx8d
좋은 글이네요. 공유해주셔서 감사합니다.