BUUCTF jarvisoj_level2 题解
用checksec检查文件安全属性

可以看到是32位程序,栈上开启了不可执行保护,但是没有栈检测标志,推测需要进行缓冲区溢出。
使用IDA反汇编程序

从反汇编后的代码可以看出read()这个函数对buf进行写入时存在缓冲区溢出,IDA会告诉我们buf数组与ebp在栈上的相对位置,即&buf=$ebp-0x88,因此我们需要填充0x88个字符就能到达ebp的位置,然后再填充4个字符就能到达eip的位置,并且system()的地址可以轻松在plt表中找到,为0x08048320,因此我们只需要在构造一个shell路径的字符转就可以getshell了。
首先在IDA中输入shift+F12,可以查找程序中的字符串。

可以看到程序中已经有了shell的字符串,由于是32位程序,函数的参数通过压栈传递,因此我们可以直接将其地址放在system之后就能够完成参数的传递。接下来就可以构造payload了。
payload=

最低0.47元/天 解锁文章
763

被折叠的 条评论
为什么被折叠?



