jarvisoj_level0
通过命令检查文件类型file level0
发现是64位的可执行文件
然后用64-ida打开
按F5显示伪代码,很简单这是一个hello world的程序
然后开始分析
可以看到main函数一共调用了三个函数
然后依次检查函数,检查 通过网上答案发现vunlnerable_function这个函数调用了200h的内存空间,其实作者也看不懂,建议进行这一步时先看看《汇编语言》王爽著。
点开buf,查看地址发现buf从-0000000000000080地址开始到+0000000000000008的位置返回此处无小端序
这时思路很明确了,在EBP寄存器中储存的是栈的返回地址+0000000000000008,如果能通过缓冲区溢出,将+0000000000000008中的数据改成之前callsystem函数的起始位置,那么esp将跳转到call system函数中执行,而我们就可以获得到shell的权限
总步骤
- 找到call system的函数开始地址(.text:0000000000400596 )
这个应该是内存地址吧?不确定,有些文件的文件地址与内存地址不一样滴,但是可以用就暂时不管了小心小端序!! - 使用栈溢出修改栈帧的返回地址
- 进入shell寻找flag
用pwntools帮我们完成这几步先看看官方文档
代码如下在这里插入代码片