INTRUDED.NET - Wargames : Leviathan Level3

WarGeme/Intruded.net 2010. 8. 31. 23:42 Posted by 알 수 없는 사용자

Access: 
ssh: leviathan.intruded.net
port: 10101
username: level3

세 번째 문제 입니다!!!  +_+

레벨 3도 홈 디렉토리에는 아무 힌트도 없더군요. wargame 디렉토리로 가보도록 하겠습니다. 레벨 3의 권한으로 실행할 수 있는 prog라는 파일이 하나 있습니다. 한 번 실행해 보겠습니다.


tmp 디렉토리 밑에 "file.log"라는 파일을 찾을 수 없다고 하는군요. touch 명령으로 file.log를 만들어 주고 실행했는데 아무것도 나오지 않네요. 더 확실히 알아보기 위해 vi 에디터로 file.log 파일에 "This is test file log!"라는 문장 하나를 입력하고, 저장한 후 다시 실행을 해 보니 아래 그림과 같이 file.log 파일에 들어있는 내용을 출력해주고 있음을 볼 수 있습니다.


그리고 또 다시 실행을 해 보니 file.log 파일을 찾을 수 없다고 합니다. 왜 그럴까요?
궁금하니까 gdb로 디버깅 해 보도록 하겠습니다.ㅋ


위 그림과 같이 우선 fopen 함수를 사용하여 file.log 파일을 열고 있는 듯 합니다.
더 내려가 보도록 하겠습니다.


unlink 함수를 이용해서 file.log 파일을 지우는 것 같습니다. 그래서 두 번째 실행했을 때는 파일을 찾을 수 없다고 나오는 군요. 음... 심심하니까 fopen 함수를 호출하기 직전에 브레이크 포인터를 걸고 실행해 보도록 하겠습니다.


<main+25>:  movl  $0x80486fa, (%esp) 에서
0x80486fa의 내용을 살펴보니 "/tmp/file.log"를 담고 있네요!!!

(......)

그냥... 그렇다는 겁니다....-_-;;;

그럼, 레벨 4의 패스워드를 알기 위해서는 어떻게 해야할지 곰곰히 생각해 보았습니다.

앗,,, 생각해보니 곰곰히 생각할 필요도 없는 것이었네요. /tmp/file.log 대신에 레벨 4의 홈 디렉토리에 있는 ".passwd"파일을 열게 하면 되겠네요. 어떻게...? prog 파일을 어떻게 손 볼 수는 없는 일이니 /tmp/file.log 파일을 손봐야겠습니다.

레벨 4의 홈 디렉토리에 있는 패스워드 파일과 심볼릭 링크를 걸어주면 될 듯 합니다.


성공입니다! ^^;

문제를 풀고 혹시 다른 사람들은 어떻게 풀었는지 궁금해서 찾아보니 prog 파일을 ltrace를 사용하여 그 속을 들여다 보신 분도 있더라구요. 이런 방법도 있군요. 전 그저 gdb...;; 다음엔 ltrace 같은 것도 한 번 써봐야겠습니다.
AND