返回信息流大家好,前几天发了一篇关于SEH溢出的示例,当时提到过另外一种经典溢出模式,即是通过直接覆盖EIP,前些时间因为主要是学习基于覆盖重写SEH Chain的模式,所以先发SHE的溢出示例,为了完整统一,今天补发通过直接覆盖EIP的经典模式,由于也是刚刚学习不久,所以肯定会有不足之处,希望各位不吝指正。
安全起见,我先声明一下:本帖涉及的内容只作为学习的目的,任何因为滥用本帖内容而导致对个人或者企业组织造成危害,作者并不承担任何责任,特此申明一下。
另外,上次发《一个SEH溢出示例~ 》的时候回帖中提到所谓“原创”的问题:就漏洞发掘本身来讲,不是我的原创,溢出点是别人公布的,就漏洞的利用来讲(可利用溢出代码的分析编写),则是我自己完成。君子耻于窃人之美以为己功,特此说明一下。
好,闲话休提,进入正题:
目标程序:Mini-streamRM-MP3Converter(见附件)
溢出点:读取播放列表“.pls”文件
本机测试平台:Windows xp
调试器:OllyDbg v1.10
首先,生成畸形pls文件:
code:
使用Ollydbg打开目标程序,并载入畸形播放列表,利用Ollydby查看各个寄存器的值,本例主要是ESP,EIP。
同样,使用使用Metasploit的两个脚本pattern_create.rb和pattern_offset.rb找到精确覆盖位置,在此不再赘述参见SEH示例:
注意,此处溢出原理与SEH Chain溢出不尽相同,此处不需要减4,直接就是17417.
修改perl代码,验证所得的字节数是否准确:
与原意符合,通过分析堆栈,可将shellcode接在eip地址之后(畸形文件),只要覆盖EIP的值,使其跳转到ESP即可执行shellcode。
使用"\xcc"设置断点是为了暂停下来检查堆栈以及各个寄存器的值。
使用findesp2找到指令“jmp esp”地址:
最后,修改PERL,添加shellcode生成溢出播放列表“pentest.pls”,执行查看效果(shellcode为反向连接抛出shell):
Game Over!
PS:贴中不讲基本原理,默认大家都懂原理,只是描述一下运用过程,原理网上比较多,再次就将其省略。
附件(3.4MB) 7c348747cd05020b242da250c0da3-Mini-streamRM-MP3Converter.exe
这是一条镜像帖。来源:北邮人论坛 / security / #29044同步于 2010/7/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Security机器人发帖
Buffer overflow补续
xsxtxt
2010/7/18镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复