任务12:Linux缓冲区溢出-Fuzzing思路

注:学习笔记来自安全牛课堂。感谢倪群主,感谢苑老师!

前面一节中,最大的问题就是如何找到能写入shellcode的内存地址?

由于ESP只能存入7个字符,所以无法写入shellcode,因此只能在其他几个寄存器中逐个寻找。


但是,这里做实验的机器找到了能存入shellcode的内存地址,如果换个环境,地址就又会发生变化。

所以,得想方法每次都能跳转到EAX寄存器中。并且还要偏移12个字节。一旦没有偏移,覆盖了EAX原有的12个字符,那么就有可能会出错。



开始运行脚本,然后去调试器上看是否成功。

到目前为止,还是比较理想的。之前在windows上的时候,用的是mona脚本,去找系统模块,在系统模块里面找汇编指令。但是,在linux环境中,只能用下面这种方法了。


点击之后,就到了下面这个界面:


由于是ESP和EIP之间的跳转,所以上图得设置一下。同时那里选择第一行的原因我估计是可读可执行。。。


根据这个指令的内存地址。进行跳转。

总体思路如下:
溢出到EIP----精确溢出EIP----将ESP中溢出"偏移12个字符 JMP EAX 并且 \x90\x90"(因为一旦溢出了EIP范围,就会溢出到ESP中,但是现在还无法百分百到达ESP寄存器中)----将EIP中存储数据溢出成“JMP ESP指令”的地址----下面,就差找出坏字符和进行shellcode的编写了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容