https://overthewire.org/wargames/bandit/bandit10.html
Level Goal
The password for the next level is stored in the file data.txt in one of the few human-readable strings, preceded by several '=' characters.
풀이
data.txt 파일에서 등호'=' 표시 앞에 읽을 수 있는 문장 몇개가 있고, 그중에 FLAG 비밀번호가 존재한다고 한다. 이게 뭔소린지 몰라서 좀 애먹었는데. 어렵게 생각하면 안된다.
data.txt를 열어보니 엄청 깨진 파일이다. 그래서 파일 형식을 보았더니 ASCII 파일이 아니다. 이중에서 사람이 읽을 수 있는 문장을 빼와야 한다. strings 명령어를 사용하면 된다.
엄청 많은 문자들이 나온다. 문제에서 '='등호 주변에 있다고 했으니, grep 명령을 활용하여 찾는다.
여기서 알게된 지식 : strings 커맨드는 문자들(ASCII Text)를 따로 추출해준다.
strings으로 찾은 문장들 중에서 grep으로 등호가 포함된 문장들만 추출하면 아래에 FLAG가 노출된 것을 볼 수 있다.
여기서 알게된 지식 : grep 명령어로 옵션 없이 바이너리 파일을 읽을 수 없다. grep 명령어로 바이너리 파일 내부를 검색하려면 -a 옵션을 사용하면 된다.
G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6s
시행착오 과정
처음에 깨진 바이너리 파일이길래 base64로 인코딩을 하여 flag를 추출하는 줄 알았다. base64로 인코딩하면 사람이 읽을 수 있는 아스키 문자들이 나오기때문이다.
base64 data.txt를 하면 위와 같이 실행 결과가 나온다. 여기서 grep '='을 하면 딱 한 문장이 추출된다.
난 당연히 이게 FLAG인줄 알고 좀 오래 해맸다 ^^..