CVE-2011-0104:Microsoft Office Excel 栈溢出漏洞修复分析
0x01 前言
- 上一篇讲到了 CVE-2011-0104 漏洞的成因和分析的方法,并没有对修复后的程序做分析。之后在一次偶然的情况下,想看一看是怎么修复的,结果却发现了一些问题
- 环境:修复后的 EXCEL.EXE 程序(提取码:t251)
0x02 伪代码分析
- 起初一开始参照资料上说对 memcpy 复制的值进行了过滤,来看一下伪代码;图中划红线的地方就是漏洞触发的函数,memcpy 的第三个参数(复制数据的大小)就是 a2 传进来的,当 a2 > a3 时就不会执行下面的 memcpy 漏洞函数(经过反复调试的结果)
- 来看一下这个值,这个变量是 0x2020 并且在调用 sub_300e7083 这个函数时并不会发生变化,也就是当复制数据的大小(v6)不大于 0x2020 时还是会跳到漏洞函数的;并且在之前也没有做过滤,所以当时的第一反映就是会不会在修复后还存在栈溢出
0x03 OD 调试分析
- 还是动手调试一下,没准又是一个新漏洞,这时的 EAX 为 300,300 就是 POC 样本中的数据,也是复制数据大小的参数
- 把他改成2000,只要不大于 0x2020 就行了
- 执行到漏洞函数中,这个 cmp 就是比较是否大于 0x2020
- EAX 为 2020,EBX 为 2000
- 执行完漏洞函数,看一下此时的堆栈
- 哈哈哈,堆栈被覆盖了
- 下面只要 F9 让他运行触发异常就行了,但是并没有,那么到底哪里出错了,经过反复调试和验证终于知道问题出在哪里了,原来是在开辟栈空间时大小为 0xFEC,而复制数据的大小控制在小于 0x2020,当复制数据的大小定为最大时,也就是 0x2020时,rep 指令的 ecx 计数就为
- 12AA08 最近的一次函数返回值
- 而 127104 就是复制时的地址
- 两个相减一下发现为 0x3004,所以再怎么复制数据也不会溢出栈空间,进而做到了防御栈溢出的效果
0x03 总结
- 开始以为防御的目的是限制过多数据复制到栈中,之后才知道是可以复制数据到栈中,但是绝对不会超过开辟的栈大小,进而防止了溢出
- 参考资料:0day安全:软件漏洞分析技术 + 漏洞战争
CVE-2011-0104:Microsoft Office Excel 栈溢出漏洞修复分析的更多相关文章
- CVE-2011-0104:Microsoft Office Excel 中的栈溢出漏洞调试分析
0x01 前言 CVE-2011-0104 是 Microsoft Office 中的 Excel(没有打补丁的情况下)表格程序在处理 TOOLBARDEF 中的 Record 字节时没有对 Len ...
- CVE-2011-0104 Microsoft Office Excel缓冲区溢出漏洞 分析
漏洞简述 Microsoft Excel是Microsoft Office组件之一,是流行的电子表格处理软件. Microsoft Excel中存在缓冲区溢出漏洞,远程攻击者可利用此 ...
- Microsoft Office Excel 不能访问文件及COM无法访问
Microsoft Office Excel 不能访问文件及COM无法访问 Microsoft Office Excel 不能访问文件“*.xls”. 可能的原因有: 1 文件名称或路径不存在. 2 ...
- Microsoft Office Excel 不能访问文件 的解决办法
Microsoft Office Excel 不能访问文件"a.xls". 可能的原因有: ? 文件名称或路径不存在. ? 文件正被其他程序使用. ? 您正要保存的工作簿与当前 ...
- [Excel操作]Microsoft Office Excel 不能访问文件
最近,客户服务器迁移,因操作系统环境变化而引起的的环境问题一堆,遇到的问题并解决方法在“[Excel]操作”类别会体现. Microsoft Office Excel 不能访问文件“C:\\LMSEx ...
- Microsoft Office Excel 不能访问文件
问题描述: Microsoft Office Excel 不能访问文件“XX.xls”.可能的原因有: 1 文件名称或路径不存在.2 文件正被其他程序使用.3 您正要保存的工作簿与当前打开的工作簿同名 ...
- ERP中通过EDI导入资料的时候出现【Microsoft Office Excel不能访问文件‘C:\Windows\TEMP\433....’
问题描述: ERP中导入单据的时候报错,Microsoft Office Excel不能访问文件'C:\Windows\TEMP\433....可能的原因有:·文件名称或路径不存在,文件正被其他程序使 ...
- 内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档。 [问题点数:20分,结帖人wenyang2004]
在环境里是没有问题的 就是发布网站后,会出现“/”应用程序中的服务器错误.--------------------------------------------------------------- ...
- 办公软件-Excel:Microsoft Office Excel 2003百科
ylbtech-办公软件-Excel:Microsoft Office Excel 2003百科 Microsoft® Office Excel 2003 是一种电子表格程序,可提供对于 XML 的支 ...
随机推荐
- c# float类型和double类型相乘出现精度丢失
c# float类型和double类型相乘出现精度丢失 double db = 4.0; double db2 = 1.3; float f = 1.3F; float f2 = 4.0F; Deci ...
- TestLink测试用例管理工具使用说明
TestLink使用说明 打开网页,登录账号:(这里的账号是已经注册过的,并且拥有admin权限,可以创建用户.当然也可以通过点击登录页面的"新用户注册"按钮进行注册,但是权限是g ...
- 2020年12月-第02阶段-前端基础-CSS初识
CSS层叠样式表 理解 css的目的作用 css的三种引入方式 1.HTML的局限性 说起HTML,这其实是个非常单纯的家伙, 他只关注内容的语义, 比如`<h1>`表明这是一个大标题,用 ...
- net5 中 后台任务利器之Hangfire 的使用
什么是Hangfire Hangfire 是一个开源的.NET任务调度框架,目前1.6+版本已支持.NET Core.它最大特点在于内置提供集成化的控制台,方便后台查看及监控: 另外,Hangfire ...
- C# 应用 - 封装类访问 Oracle 数据库
1. 引入库类 Oracle.ManagedDataAccess.dll using Oracle.ManagedDataAccess.Client; 2. 粗暴封装 namespace xx { p ...
- WPF 基础 - Trigger
1. Trigger 1.1 由属性值触发的 Trigger 最基本的触发器,Property 是关注的属性名称,value 是触发条件,一旦触发条件满足,就会应用 Trigger 的 Setters ...
- CCPC-2020 黑龙江省赛——Let’s Get Married
题意:~~ 思路:题目给出的数字太少了,我们多写几个,就会发现每层最左边的值等于1.2*k(k+1) ,k代表层数,找规律发现如果一个点的坐标为2.(x,y)且|a|+|b|=k,id<=2*k ...
- vue文本滚动组件
看了好多网上的文本组件,发现好多都有这样那样的问题:特别是滚动的时候失真的感觉,今天整合了文本滚动的方式用CSS的 animation写出一套组件:VUE项目直接用.感觉有用的朋友关注下 效果图, ...
- [Fundamental of Power Electronics]-PART I-6.变换器电路-6.4 变换器评估与设计/6.5 重点与小结
6.4 变换器评估与设计 没有完美适用于所有可能应用场合的统一变换器.对于给定的应用和规格,应该进行折中设计来选择变换器的拓扑.应该考虑几种符合规格的拓扑,对于每种拓扑方法,对比较重要的量进行计算,比 ...
- 构建之法与CI/CD
项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 个人阅读作业2 我在这个课程的目标是 认识软工,拥抱软工,提升相关能力以便日后与其朝夕相伴 这个作业在哪个具 ...