CTF-PWN-1


pwn

先检查保护机制

保护机制

开启了Nx和Relro保护,stack还是可以溢出,但是在stack中写shellcode的方式已经不可以了。因为Nx把数据所在的区域全部标记为不可执行的了。

查看反编译之后的代码

反汇编

观察到溢出点,gets(v4 ,argv)同时也可以看到程序中引入了system的系统调用,和相应的”/bin/sh”的字符串,所以我们可以通过ROP的方式解题。

ROP,Return-oriented programming面向返回导向式编程,会借助ret和栈顶,实现控制流的导向。

关键问题

system函数需要一个参数 /bin/sh,不能直接让system函数的地址覆盖掉 返回地址。需要利用ROP,将 /bin/sh的地址导入到 rdi寄存器里面,再调用system函数才行。

这个思路在第一开始,我是明白的。但是我不知道如何将 /bin/sh的地址保存到rdi寄存器里面去。还有就是,不知道这个system的地址到底应该是哪个?是extern里面的,还是plt里面的,亦或是 _system这个函数的?

PLT原理

原理的部分,还是要补上。主要就是CSAPP的第七章。慢慢补上就好啦~~

解决思路

ROP



文章作者: 美食家李老叭
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 美食家李老叭 !
评论
  目录