注:学习笔记来自安全牛课堂。感谢倪群主,感谢苑老师!
查找坏字符,就是在EAX里面尝试。就是怕shellcode不能正常运行。找坏字符还是那个办法,就是将200多个唯一字符全都写入EAX,看哪个不能显示,被过滤了,那就是坏字符
上面这幅图,在\x97那里的内存地址,可能是之前说的要倒过来的地址,我有点晕了。回头去前面看一下,到底是存入的地址需要倒着写,还是存入的数据要倒着写入。
先看下面的脚本,下面的脚本还没有执行
在脚本运行之前,先进入调试界面
进入调试界面之后,设置一个断点,这样可以看的更加清晰
得记住这个JMP ESP指令的内存地址,就是08134597
而且上面那幅图的左上角也看到了,下面要执行的指令是JMP ESP。
这时候,再按下F8,调试程序就再执行一步,执行了一步之后就会发现下图中已经执行了JMP ESP了
回到kali中,去生成shellcode
这里截图截少了。上面还显示了这是78个字符。为什么要关注这个?因为当时这个寄存器里面是4000多个A,为了不影响效果,不出现意外,还得继续除去这个78个shellcode后,继续填充A,直到满足4000多个A(4000多个是一个准确的字符数量。这个crossfire程序很奇怪,必须要满足一个准确的数值才会溢出,多了不行,少了也不行)
下面就开始进行测试了。先开启服务
然后,再去执行溢出脚本
结果,失败了。。。。
换了一个脚本:
执行上面的脚本之后,发现4444端口打开了,说明成功了。
用nc连接一下,发现成功了。