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.

 

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

Hint

1. 쉘 스크립트

Write Up

더보기
더보기

문제를 읽어보니, 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

복사했습니다!