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 的支 ...
随机推荐
- Java 多线程 01
多线程· Runnable 和 Thread 多线程的引入 * A:什么是线程 * 线程是程序执行的一条路径,一个进程中可以包含多条线程 * 多线程并发执行可以提高程序的效率,可以同时完成多项工作 * ...
- SVHN数据集 Format1 剪裁版
SVHN数据集官网:http://ufldl.stanford.edu/housenumbers/ SVHN数据集官方提供的有两种格式 Format1是那种在街上拍的照片,每张照片的尺寸都不同,然后l ...
- C# 应用 - 使用 WepApp 处理文件上传、下载请求
1. 代码 /// <summary> /// 文件上传下载控制器 /// </summary> public class FileController : ApiContro ...
- SPOJ D-query 【主席树】
一 题目 D-query 二 分析 主席树的运用. 这题首先应该考虑的是,如何分出种类数?再就是考虑如何维护区间信息? 最开始想的是直接离散化后用权值线段树建主席树,发现不行,因为假如$ [l,r] ...
- Android Studio 安装并使用genymotion
一.安装genymotion与VirtualBox 1.安装 genymotion安装包:https://pan.baidu.com/s/1UTwvJv2pbHE4znBw91V19g virtual ...
- P1162_填涂颜色(JAVA语言)(速看!全洛谷最暴力解法!QAQ)
思路:看了看数据n<=30,于是我们可以暴力求解(主要是BFS学的不咋地~2333).枚举每个0的位置,看上下左右四个方向上是否都有1.都有1的话说明被1包围,即在闭合圈的内部,开个数组标记一下 ...
- 全网最详细的Linux命令系列-ls命令
Linux开始必须要会的命令当属ls,在日常工作中用到ls命令时的频率是很多的,作为一个初学者,可能我只会或者顶多ls -l两种用法.但是ls其实是一个非常实用的指令,ls命令就是list的缩写,ls ...
- 什么是 Jenkins? 运用Jenkins持续集成
[注]本文译自:https://www.edureka.co/blog/what-is-jenkins/ 持续集成是 DevOps 最重要的部分,用于集成各个 DevOps 阶段.Jenkins ...
- Dynamics CRM开发参考资料
Developer Guide for Dynamics 365 Customer Engagement https://docs.microsoft.com/en-us/dynamics365/cu ...
- H5 端 rem 适配方案与 viewport 适配
H5 端 rem 适配方案与 viewport 适配 rem rem 是 CSS3 新增的一个相对单位(root em,根 em) 只根据当前页面 HTML 页面的 font-size 设置,如果根目 ...