CVE-2013-0077:Microsoft DirectShow quartz.dll m2p 文件堆溢出漏洞简单分析
0x01 前言
- 2012 年 10 月 5 日,exploit-db 漏洞公布站点上发布了 QQplayer.exe 3.7.892 m2p quartz.dll Heap Pointer OverWrite PoC,后被人提交至乌云。这个漏洞与 QQplayer.exe 没有任何关系,而是系统的 quartz.dll 在解析 .m2p 文件头时没有限制复制数据的大小,导致复制的数据超出了申请的栈空间
- 调试所用到的 POC 和 QQplayer.exe 文件:CVE-2013-0077.zip(提取码:svor)
0x02 简单分析
- 开启堆页保护,打开 QQplayer.exe 使用 windbg 附加进程,运行之后将 PoC 拖入 QQplayer 引发异常

- 出问题的 rep 指令,有经验的可以看出问题出在 quartz.dll 中

- 断下这个断点,重新运行至断点处,并且查询 edi 和 esi 的值,执行完 rep 指令之后,会将 0x26c88f38 地址的值循环复制到 0x270e0f64中,每次复制 4 个字节

- 查看 ecx 的值,可以发现复制的次数为,0x30 次,所以复制的字符串长度为 0x30 * 4 = 0xC0

- 对比样本中的数据,发现 ba 之后全是填充的 A 字符

- 下面通过对比 rep 指令执行前后来计算堆块可用空间的大小
- 触发堆页保护异常前,edi 指向的地址

- 触发堆页保护异常时,edi 指向的地址

- 所以该堆块空间的最大容量为 0x9C,而复制的时候字符串的大小为 0xC0,超出了 0x24 个字节,导致堆溢出

- 这个就是 IDA 反汇编出来的伪 C 代码
- a1 由参数传入,其值为 rep 指令中的 esi 指向的地址;a2 为复制的大小,并且没有做过滤

- 至于利用的话可以覆盖堆栈的 HEAP_FREE_ENTRY 结构,操纵虚表指针的方式来执行任意代码
- 漏洞修复的话只需要限制 a2 的大小即可,微软在颁布补丁的时候限制了 a2 的大小不得超过 8c,从而达到了防止堆溢出的目的
- 参考资料:0day安全:软件漏洞分析技术 + 漏洞战争
以上就是 CVE-2013-0077 的简单分析,如有错误,欢迎指正
CVE-2013-0077:Microsoft DirectShow quartz.dll m2p 文件堆溢出漏洞简单分析的更多相关文章
- CVE-2012-0003:Microsoft Windows Media Player winmm.dll MIDI 文件堆溢出漏洞调试分析
0x01 蜘蛛漏洞攻击包 前言:2012 年 2月,地下黑产中流行着一款国产名为蜘蛛漏洞的攻击包 -- "Zhi-Zhu Exploit Pack",该工具包含 5 个漏洞,都是在 ...
- CVE-2010-2553:Microsoft Cinepak Codec CVDecompress 函数堆溢出漏洞调试分析
0x01 前言 微软提供一个叫 Cinepak 的视频解码器,通过调用 iccvid.dll 这个动态链接库文件可以使用这个解码器:微软自带的 Windows Media Player(视频音频软件) ...
- CVE-2018-0802:Microsoft office 公式编辑器 font name 字段二次溢出漏洞调试分析
\x01 前言 CVE-2018-0802 是继 CVE-2017-11882 发现的又一个关于 font name 字段的溢出漏洞,又称之为 "第二代噩梦公式",巧合的是两个漏洞 ...
- CVE-2018-0798:Microsoft office 公式编辑器 Matrix record 字段栈溢出漏洞调试分析
\x01 前言 2018 年 1 月 9 日,Office 公式编辑器再曝出新漏洞,编号为 CVE-2018-0798.提起公式编辑器大家都不陌生,之前的 CVE-2017-11882 和 CVE-2 ...
- CVE-2012-0158:Microsoft Office MSCOMCTL.ocx 栈溢出漏洞调试分析
0x01 Lotus Blossom 行动 在 2015 年 6 月,国外安全厂商 Palo Alto Networks 的威胁情报团队 Unit42 发现了一起针对东南亚政府的一次间谍行为,试图获取 ...
- RDLC的部署(无法找到Microsoft.ReportViewer.ProcessingObjectModel.dll文件)
CMD命令:C:\Windows\assembly\GAC_MSIL\ rdlc 相比微软的其他产品来说,做得还真是够烂的了,比水晶报表也烂得多. 但不知为何我还是宁可先择 rdlc.并且渐渐上手了. ...
- [日常工作] 并行计算引发Microsoft.jscript.ni.dll的内存溢出问题的分析解决. .net framework 的版本说明
1. 性能组进行 单点性能测试时发现 商务智能的 并行分析有问题. 效率很低, 开发人员查看iis 的日志 发现错误原因是 Microsoft.jscript.ni.dll 有内存溢出的问题 开发人员 ...
- CVE-2012-1876:Internet Exporter MSHTML.DLL CaculateMinMax 堆溢出简单分析
0x01 2012 Pwn2Own 黑客大赛 Pwn2Own 是世界上最著名的黑客大赛,意在激励白帽黑客们进行顶尖的安全研究.在 2012 年 Pwn2Own 大赛上,来自法国著名的安全团队 Vupe ...
- CVE-2012-0003 Microsoft Windows Media Player ‘winmm.dll’ MIDI文件解析远程代码执行漏洞 分析
[CNNVD]Microsoft Windows Media Player ‘winmm.dll’ MIDI文件解析远程代码执行漏洞(CNNVD-201201-110) Microsoft Wi ...
随机推荐
- 2020年HTML5考试模拟题整理(二)
1.以下是HTML5新增的标签是: AA.<aside>B.<isindex> C. <samp>D.<s>2.以下不是HTML5的新增的标签是: BA ...
- python 操作符** (两个乘号就是乘方)
一个乘号*,如果操作数是两个数字,就是这两个数字相乘,如2*4,结果为8**两个乘号就是乘方.比如3**4,结果就是3的4次方,结果是81 *如果是字符串.列表.元组与一个整数N相乘,返回一个其所有元 ...
- 前端坑多:使用js模拟按键输入的踩坑记录
坑 一开始在Google搜索了一番,找到了用jQuery的方案,代码量很少,看起来很美好很不错,结果,根本没用-- 我反复试了这几个版本: var e = $.Event('keyup') e.key ...
- yolo训练数据集
最近了解了下yolov3的训练数据集部分,总结了以下操作步骤:(基于pytorch框架,请预先装好pytorch的相关组件) 1.下载ImageLabel软件对图片进行兴趣区域标记,每张图片对应一个x ...
- string与bson.ObjectId之间格式转换
string转bson.ObjectId bson.ObjectIdHex(string) bson.ObjectId转string日后再补
- scala集合上常用的方法
sacala 关于集合常用的操作 map1.映射:对集合中的每一个元素进行执行某一项操作2.返回值类型,正常情况不变,原来集合是什么类型,就返回什么类型3.元素类型,根据我们函数的返回值类型 val ...
- JS逆向-抠代码的第四天【手把手学会抠代码】
今天是md5巩固项目,该项目比昨天的复杂一些,但方法思路是一样的. 今天的目标:https://www.webportal.top/ 打开网站,填入账号密码(密码项目以123456做测试).点击登录抓 ...
- 攻防世界 reverse elrond32
tinyctf-2014 elrond32 1 int __cdecl main(int a1, char **arg_input) 2 { 3 if ( a1 > 1 && c ...
- Java 添加数字签名到Excel以及检测、删除签名
Excel中可添加数字签名以供文档所有者申明文档的所有权或有效性.文本以Java代码示例介绍如何在Excel文档中对数字签名功能进行相关操作,包括如何添加签名到Excel.检测Excel文档是否已签名 ...
- 使用 Kubernetes 扩展专用游戏服务器
系列 探索使用 Kubernetes 扩展专用游戏服务器:第 1 部分-容器化和部署 探索使用 Kubernetes 扩展专用游戏服务器:第 2 部分-管理 CPU 和内存 探索使用 Kubernet ...