嘿嘿,又是我,我又肥来了。今天带来的是攻防世界第三题的writeup,这次话不多说,我们直接进入主题。
无论怎么样,pwn题前两步少不了——查看文件类型和保护类型:
64位linux操作系统,只开了NX保护,再打开IDA看看。

将Hello,World显示到屏幕上,再点开函数看看:

可以看到,buf是分配了80个字节(从rbp-80-rbp+0) ,但是read函数读入了0x200字节,因此,这里明显有栈溢出,再点开buff看看:

可以看到,我们只需要将buf和s覆盖,也就是覆盖88个字节,再将下一条指令地址修改成获取flag的地址就好了,但是我怎么知道,获取flag的地址在哪?(r是存储下一条指令的寄存器吧) ,请继续看IDA:

可以看到,获取权限的函数在这,即只需要把下一条指令的地址改写到这即可,再查看该函数地址:
0x400596,至此,我们便可以写出exp:

运行可得:

呼~终于写完了,好饿,吃饭饭去了,溜了溜了。
本文介绍了如何分析64位Linux程序,发现并利用栈溢出漏洞。通过查看文件保护类型,发现只开启了NX保护。在IDA中分析代码,找到栈溢出点和目标函数地址,最终构造exploit实现控制流程,成功获取flag。
1744

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



