12.07.2013 Views

Return-to-Libc 기법의 이해 [SlaxCore].pdf

Return-to-Libc 기법의 이해 [SlaxCore].pdf

Return-to-Libc 기법의 이해 [SlaxCore].pdf

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

- 88 -<br />

수원대학교 보안동아리 FLAG<br />

실패다 . 뭔뫐가가 잘못몰 되었다 . 이리저리 원인을 찾죎아본묯 결과 execve() 가 실행된 후의<br />

./setid(argv[0]) 의 주졅소를 찾죎아야 한다는것을 알았다 . ( 좀젪더 연구 요망 )<br />

메인함수의 ebp를 기준졇으로 ebp+12의 위치에서 argv[0] 의 주졅소를 뫵견할 수 있다 . 그 주졅소를 따<br />

라가 포인터를 확인해보니 각각의 argument 를 가리키고 있는것을 확인 할 수 있다 .<br />

vul을 gdb를 사용하여 disassemble하여 확인해보아도 argument처죞리부뭂분뭄에서 ebp+12에<br />

위치한<br />

argument 를 레지스터에 넣는것을 확인 할 수 있다 .<br />

이제정 다시 테스트를 해보자 . argv[0] 은 0xbfffff14 이므뫝로 argv[0]-8은 0xbfffff0c 0xbfffff0c , execl()+3은<br />

0x400e0d07<br />

0x400e0d07이다 0x400e0d07<br />

0x400e0d07 . 공격코드는 아래와 같다 .<br />

[/home/slaxcore/Ret_<strong>to</strong>_libc]$cat exploit.c<br />

#include <br />

int main()<br />

{<br />

char *argv[]={

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!