[漏洞样本分析]CVE-2012-0158

环境:

Windows7专业版32位
Office2003 XP3 完全版

POC来源:

网络样本
工具:
IDA OD 010Ediotr windbg

漏洞成因以及分析:

栈内存拷贝溢出漏洞,控件安全检查不严

查找漏洞触发点:

如果分析有错误,谢谢大家帮我指正
打开WORD 使用OD 附加WORD 打开POC
触发溢出
在这里插入图片描述
由于栈溢出会破坏向下的栈空间,如果足够大,那基本是找不到线索 所以我们往溢出点的栈往上看 找点线索定位溢出点
在这里插入图片描述
往上看发现两个返回地址 先看第一个
在这里插入图片描述
可能是栈溢出的函数位置 我们现在这里下断试试

然后再开,单步步过,观察堆栈返回地址是否被破坏
经过观察我们发现是这个函数执行完后堆栈被破坏
在这里插入图片描述
我们进函数里面观察一下 有没有可疑的内存拷贝语句
经观察 极有可能是这句拷贝语句造成的溢出
在这里插入图片描述
但是在汇编里不好观察,我们搜索一下最初在栈里发现那两个返回地址的名字
找到了这个模块,我们使用IDA观察一下
通过在OD里的位置 定位到了IDA里的函数
在这里插入图片描述
进去溢出函数里面看 发现是这句造成的溢出的函数
在这里插入图片描述
而对传进来的长度参数只有一句简单的判断
所以只要使这个局部变量V7 和传进来的参数相等就可以了,我们往上观察传参的地方
在这里插入图片描述
发现是定义的局部变量 而且要=>8 没有上限 这样更是我们shellocde的最佳利用点
我们打开010Ediotr 使用WinExec 然后使用OD动态调试 快速定位这两个局部变量的位置就是
在这里插入图片描述
所以我们在写shellocde时候也要往后移动八个字节

运行指令我们就是用跳板指令JMP ESP 接下来我们就要在里面搜索这个指令
我们打开windbg 附加 使用mona插件搜索模块
在这里插入图片描述
我们选择一个保护比较少 而且通用性高的模块 大家可以自己判断 我选择的是WININET.dll 这个模块
在这里插入图片描述
选一个地址作为我们的跳板
在这里插入图片描述
完成利用
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/r250414958/article/details/83616458