1、检查文件类型
查看之后发现是32位的ELF文件,RELRO和NX保护不影响我们做题
2、IDA反编译,进行分析
main函数中提到了一个vulnerable_function();
双击点开这个函数
从反汇编后的代码可以看出read()这个函数对buf进行写入时存在缓冲区溢出
3、实现方法
"node5.buuoj,cn",25747是靶机信息
buf到ebp的距离是0x88,ebp到Return的距离是0xF
system的地址可以在plt中找到,双击system.plt
然后在输入shift+F12,可以查找
bin/sh的地址
这里需要注意的是,由于我们是直接调用system()而不是使用call指令,因此计算机会将调用函数前栈顶指针指向的地址视为函数的返回地址,因此我们需要在这个地方随便填入一些值。