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

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

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

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

任务12:Linux缓冲区溢出-Fuzzing思路_第1张图片


任务12:Linux缓冲区溢出-Fuzzing思路_第2张图片

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

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

任务12:Linux缓冲区溢出-Fuzzing思路_第3张图片


任务12:Linux缓冲区溢出-Fuzzing思路_第4张图片


任务12:Linux缓冲区溢出-Fuzzing思路_第5张图片

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

任务12:Linux缓冲区溢出-Fuzzing思路_第6张图片

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

任务12:Linux缓冲区溢出-Fuzzing思路_第7张图片


任务12:Linux缓冲区溢出-Fuzzing思路_第8张图片

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


任务12:Linux缓冲区溢出-Fuzzing思路_第9张图片

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


任务12:Linux缓冲区溢出-Fuzzing思路_第10张图片

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

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

你可能感兴趣的:(任务12:Linux缓冲区溢出-Fuzzing思路)