김승현

[OverTheWire] Bandit Level 24 → Level 25 본문

Linux/OverTheWire : Bandit

[OverTheWire] Bandit Level 24 → Level 25

kshind 2023. 2. 20. 18:48

문제

문제 원문

포트 30002포트로 리스닝을 하고 bandit24의 password와 4자리 암호를 주면 bandit25의 password를 준다고 하는 것 같다.

pincode를 얻는 방법은 브루트포싱이라고 불리는 방법밖에 없다고 한다.

 

브루트 포스 공격이란? 

무차별 대입 공격으로 특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 것을 의미한다. 모든 가능한 경우의 수를 시도하기 때문에 돈과 시간만 있다면 모든 암호를 얻을 수 있지만 웹사이트의 경우 대부분 각자의 방지책을 마련하고 있다. 

 

풀이

(ls -al을 해도 힌트가 딱히 없는 것 같아서 넣지 않았습니다)

nc 명령어를 이용해서 localhost의 30002포트에 접속해보면 두 줄 정도의 문장이 출력된다. 짧게 요약하자면

bandit24의 password와 네 자리 pincode를 띄어쓰기로 구분해서 한 줄로 입력해 달라고 한다.

요구하는대로 일단 password와 아무거나 입력해 봤는데 Wrong!이라고 뜨면서 올바른 pincode를 입력해 달라고 한다.

 

일단 셸스크립트를 작성해야 할 것 같아서 /tmp/pincode라는 디렉토리를 만들었고 chmod 777로 권한을 변경했다.

[password] [pincode] 양식에 맞게 0~9999까지 작성해줄 셸스크립트를 작성해보자

#!bin/bash  # bash 셸 실행


for i in {0..9999}  # 0부터 9999까지 반복
do  # for문 시작
        echo "VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar $i" >> /tmp/pincode/clist.txt  # [bandit24password] [0~9999까지 pincode]                                                                                                                                       형식으로 /tmp/pin/clist.txt에 저장
done  # 끝

./mkcode.sh로 안 돼서 bash를 이용해서 mkcode.sh를 실행시켰다.

찾아보니까 셸스크립트는 bash나 sh를 통해 실행시킬 수 있다고 한다.

정상적으로 파일이 생성됐다.

clist.txt 파일 내용

이런 식으로 password pincode가 9999까지 작성되었다.

이렇게 작성된 txt파일의 내용을 localhost 30002포트에 모두 입력되게 하면 된다.

 

위의 방식으로 했더니 어디쯤에 correct가 있는지 알 수가 없었다....

 


그래서 출력 결과를 result라는 파일에 저장하도록 만들었다.

성공적으로 result라는 파일이 만들어진 걸 볼 수 있다.

sort와 uniq로 중복되는 건 지우면 이제 correct를 볼 수 있을 것 같다.

오잉...? correct를 못 찾은 게 아니라 애초에 없었나 보다..... 새로운 방법으로 해봐야겠다.......

 

생각해보니까 password는 4자리인데

내가 짠 스크립트에선 0~999까지 들어가면 0, 1, 2...999처럼

1~9까진 한 자리 10~99는 두 자리 100~999까진 세 자리로 들어가게 되는 것 같아 새로 짜봤다.

new_mkcode.sh 파일을 만들어서 0~9까지 총 4개 들어가서 네 자리로 만들었고 new_clist.txt로 만들게 바꿨다.

bash로 실행시키고 ls -al 해봤더니 성공적으로 new_clist.txt가 만들어졌다.

vi로 열어봤더니 성공적으로 네 자리 코드가 만들어진 것도 볼 수 있다. 이걸 이용해보자.

res파일에 저장되도록 입력하고 난 후 ls -al을 입력해보니 res가 만들어졌다.

이번엔 제발 정답이었으면 좋겠다는 마음으로 명령어를 입력했다.

이번에 그냥 cat res만 했는데 마지막에 password가 떴다!

 


진짜 처음에 안 되는 거 보고 너무 당황했는데 진짜 나와서 다행이다. 진짜 오늘 하루종일 해봐야 되나 싶었는데 너무 다행이다. 근데 하고 난 후에 write up 찾아보니까 그냥 {0,,9999}로 password 나온 분들이 많던데 뭐지...? 나만 이런가

근데 password 값이나 경로 내용이 다른 분들이랑 내가 푼 게 다르긴 하던데 좀 달랐나 보다

 


다음 문제

https://kshind.tistory.com/27

 

[OverTheWire] Bandit Level 25 → Level 26

문제 bandit25에서 26으로 접속하는 건 쉽지만 bandit26의 셸은 /bin/bash가 아닌 다른 무언가라고 한다. 그게 뭔지 알아내고 어떻게 작동 발생되는지 알아내라고 하는 것 같다. 풀이 ls -al을 해보면 bandit

kshind.tistory.com