본문 바로가기

Pwnable/FTZ

[ProjectH4C] [Write-up] 해커스쿨 FTZ Level 7

level6에선 접속하자마자 평소와 다른 화면에 적잖이 당황했는데, level7은 다시 쉘 하나만 나온다. 먼저 level7 디렉토리에서 ls -al을 실행해보았는데, 특별한 점은 없어 보인다. 그렇다면 level7 그룹의 파일을 찾아봐야겠다.

 

/proc는 제끼고, level7 디렉토리도 이상없었기에 제끼면, /bin/level7 파일이 보인다. 권한을 한번 봐야겠다.

 

SetUID가 설정되어 있고, level8 소유의 프로그램이다. 이걸 이용하면 되겠다 싶어서 일단 실행해보았다.

내 패스워드를 입력하라는 건가? 우선 level7의 패스워드를 입력했다.

 

패스워드 입력하라면서, 갑자기 cat 명령어의 에러가 출력된다. 뭔데요 그래서 이게? 갑자기 cat /bin/wrong.txt 을 왜 실행하는데??

 

디버깅을 하려니 디버깅도 안되고, /bin 디렉토리에 권한이 없어서 복사도 못해온다. 이 이상 할 수 있는게 없다고 판단하여 힌트를 보기로 했다.

 

힌트를 이해하기 위한 힌트라도 있어야 할 판이다..

며칠에 걸쳐 보았는데도

cat: /bin/wrong.txt: 그런 파일이나 디렉토리가 없음

위의 오류에 대해 해결할 방법을 찾지 못해서 검색을 해보았더니 세상에나...

FTZ 서버를 로컬에서 구축한 사람의 경우 /bin/wrong.txt 파일이 누락되어 있다고 한다... 여태까지 저게 힌트인 줄 알았는데... /bin/wrong.txt의 내용은 다음과 같다고 한다.

--_--_- --____- ---_-__ --__-_-

root 계정으로 들어가 /bin 디렉토리에 위의 내용으로 wrong.txt 파일을 만들고 다시 level7 계정으로 /bin/level7을 실행하면 아래와 같이 나온다.

 

해당 부호를  "-"을 1로, "_"을 0으로 변환해보면 1101101 1100001 1110100 1100101 이 된다. 이를 10진수로 바꾸어보면 109 97 116 101이 된다. 아스키코드 상으로 97~122가 알파벳 'a'~'z'인데, 모두 그 사이 값이기 때문에, 아스키코드로 바꾸어보았더니 mate가 된다. mate가 패스워드인건가 싶어 /bin/level7을 다시 실행해보았다.

 

드디어 다음 레벨로 갈 수 있게 되었다. 정말... 이번 레벨의 난이도는 어렵지 않았던 것 같은데 wrong.txt 파일 하나에 며칠동안 멘붕상태였던 걸 생각하면... 끝까지 혼자 해보겠다고 고집부렸으면 절대 못 풀었을 문제였다.