任务11:Linux缓冲区溢出-Fuzzing调试

任务11:Linux缓冲区溢出-Fuzzing调试_第1张图片

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


任务11:Linux缓冲区溢出-Fuzzing调试_第2张图片



任务11:Linux缓冲区溢出-Fuzzing调试_第3张图片


任务11:Linux缓冲区溢出-Fuzzing调试_第4张图片


任务11:Linux缓冲区溢出-Fuzzing调试_第5张图片

上面测试有溢出漏洞,下面就是精确到哪里有溢出了。

任务11:Linux缓冲区溢出-Fuzzing调试_第6张图片


任务11:Linux缓冲区溢出-Fuzzing调试_第7张图片


任务11:Linux缓冲区溢出-Fuzzing调试_第8张图片

下面的脚本得多留意一下。

任务11:Linux缓冲区溢出-Fuzzing调试_第9张图片

运行上面的脚本之后,看下面的图:


任务11:Linux缓冲区溢出-Fuzzing调试_第10张图片
任务11:Linux缓冲区溢出-Fuzzing调试_第11张图片

另外,这里有点奇怪的是,只有发送4379个字符才会溢出,而不是说超过4379就能溢出。和之前的windows差距比较大。windows是只要超过一定的数值,就能溢出了。所以,这里要注意。还有,如何知道是4379个字符是溢出的???(crossfire程序的服务比较奇怪,必须要是一个固定的数值,才会溢出。至于怎么测试到时4379的,没有细说)

我估计,是利用唯一字符法,先找到EIP里面的地址,然后,逐步测试ESP里面的值。由于是四个一组,每次测试都是都是加4,4368+4=4372,4372+4=4376,这里已经到了ESP的前四个字符了。后面再测试4380估计失败了。于是又减少字符量,测试到4379刚好溢出成功。EIP也准确写入四个字符。我估计是这么回事。

由于必须精确字符数量,这就导致了在ESP中只能存7个字符,存7个字符又无法写shellcode。所以,思路是找到一个固定的地址,能存入shellcode的地址。因此,现在的问题就是如何找到这个地址。

你可能感兴趣的:(任务11:Linux缓冲区溢出-Fuzzing调试)