下载文件后
首先查看文件的保护
将文件拖入ida,反汇编后,发现有个函数名已经明示了
进入vulnerable_function后,发现buf到rbp的距离为0x80,而read中给buf赋值的空间有0x200,确定这是一道栈溢出的题目,溢出点就在此处。
随后发现文件提供了callsystem。开始着手编写脚本。
payload解释:buf距离rbp有0x80的长度,再加上需要覆盖rbp的8字节(64位下覆盖rbp需要8字节)所以填写的垃圾数据有0x80 + 0x8。rbp后是返回地址,填写callsystem的地址。
执行脚本: