본문 바로가기

Wargame/Lord Of Buffer overflow

[LOB] 8번 orge -> troll















id : orge

password : timewalker



로그인 후 troll.c의 코드를 보면 다음과 같다.









저번 문제에서 argv[1]을 이용해서 문제를 풀었었는데 이제는 그것도 못하게 되었다.


그래서 argv[0], 즉 파일 이름에 쉘코드를 넣어 실행시켜주면 될 것 같다.









bash2로 바꿔준 후 진행했다.


일단 파일 이름에 넣을 수 있는 쉘코드는 


\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81


48byte 이다.

그래서 쉘코드 앞에 27byte, 뒤에 25byte로 NOP을 채워 총 100byte를 만들어 주었다.

이 길이와 맞는 파일 이름에 troll을 복사해서 gdb를 이용해 argv[0]의 주소를 알아내면 될 것 같다.









argv[0]의 주소는 


0xbffffb7c


이다.








심볼릭 링크를 이용하여 쉘코드가 있는 총 100byte 길이의 파일 이름을 만들어 주었다.


확인해보니 다음과 같다.










아까 써준 파일 이름으로 실행시키고 argv[1]에 NOP으로 44byte 채우고 리턴 어드레스에 argv[0]의 주소를 넣어주었다.


쉘이 실행되면서 bash2가 떴다.


my-pass를 통해 비밀번호를 알아낼 수 있다.




'Wargame > Lord Of Buffer overflow' 카테고리의 다른 글

[LOB] 10번 vampire -> skeleton  (0) 2017.11.17
[LOB] 9번 troll -> vampire  (0) 2017.11.16
[LOB] 7번 darkelf -> orge  (0) 2017.11.14
[LOB] 6번 wolfman -> darkelf  (0) 2017.11.07
[LOB] 5번 orc -> wolfman  (0) 2017.11.07