Season 1/워게임

[OverTheWire System - Bandit] Level 24 >> Level 25

작성자 - LRTK

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.

 

데몬은 포트 30002에서 수신 대기 중이며 bandit24에 대한 암호와 비밀 숫자 4자리 핀코드가 제공된 경우 bandit25에 대한 암호를 제공합니다. 무차별 대입(brute-forcing)이라고 하는 10000가지 조합을 모두 통과하는 것 외에는 암호를 검색할 방법이 없습니다.

1. 쉘 스크립트

더보기
더보기

문제를 읽어보니, netcat으로 localhost 30002번 포트에 연결하여 bandit24의 pw와 pincode를 넘겨주면 되는 문제로 보인다.

 

나는 파이썬으로 문제를 해결하려고 했지만, 느린 ssh와 불편한 vim에서 하기엔 너무 힘들어서 간단하게 쉘 스크립트를 이용하여 문제를 풀이하였다.

 

서버에 연결하여 해보니, 몇가지 테스트를 해봤다.
bandit24의 pw만 보낼 때, pincode만 보낼 때, 둘 다 보낼 때를 살펴보니 문제 설명처럼 bandit24의 pw와 pincode를 같이 보내야 Wrong!이 뜨는 것을 볼 수 있었다. 또한 pincode가 틀려도 서버와의 연결이 끊어지지 않았다.

 

나는 쉘 스크립트 파일을 만들기 위해 /tmp에 내 디렉토리를 만들었다.

 

#!/bin/bash for i in {0..9999} do echo "UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i" >> pincode_list done

위 코드로 쉘 스크립트 파일을 만들었지만, 실행 권한이 없어서 chmod로 권한을 둔 다음 실행하겠다.
코드의 내용은 'bandit24의 pw 0' ~ 'bandit24의 pw 9999'을 출력하여 pincode_list 파일에 저장하겠다라는 코드이다.

 

실행하여 잘 저장이 되었는지 확인해보니, 잘 저장되었다.
이제 저 목록을 이용하여 bandit25의 pw를 알아내도록 하겠다.

 

마지막 결과값을 출력하여 확인해보니, bandit25의 pw가 있는 것을 볼 수 있었다.

 

bandit25 :: uNG9O58gUE7snukf3bvZ0rxhtnjzSGzG

이 글이 도움이 되었다면, 응원의 댓글 부탁드립니다.