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 栈溢出漏洞修复分析的更多相关文章

  1. CVE-2011-0104:Microsoft Office Excel 中的栈溢出漏洞调试分析

    0x01 前言 CVE-2011-0104 是 Microsoft Office 中的 Excel(没有打补丁的情况下)表格程序在处理 TOOLBARDEF 中的 Record 字节时没有对 Len ...

  2. CVE-2011-0104 Microsoft Office Excel缓冲区溢出漏洞 分析

    漏洞简述   Microsoft Excel是Microsoft Office组件之一,是流行的电子表格处理软件.        Microsoft Excel中存在缓冲区溢出漏洞,远程攻击者可利用此 ...

  3. Microsoft Office Excel 不能访问文件及COM无法访问

    Microsoft Office Excel 不能访问文件及COM无法访问 Microsoft Office Excel 不能访问文件“*.xls”. 可能的原因有: 1 文件名称或路径不存在. 2  ...

  4. Microsoft Office Excel 不能访问文件 的解决办法

    Microsoft Office Excel 不能访问文件"a.xls". 可能的原因有: ? 文件名称或路径不存在.  ? 文件正被其他程序使用.  ? 您正要保存的工作簿与当前 ...

  5. [Excel操作]Microsoft Office Excel 不能访问文件

    最近,客户服务器迁移,因操作系统环境变化而引起的的环境问题一堆,遇到的问题并解决方法在“[Excel]操作”类别会体现. Microsoft Office Excel 不能访问文件“C:\\LMSEx ...

  6. Microsoft Office Excel 不能访问文件

    问题描述: Microsoft Office Excel 不能访问文件“XX.xls”.可能的原因有: 1 文件名称或路径不存在.2 文件正被其他程序使用.3 您正要保存的工作簿与当前打开的工作簿同名 ...

  7. ERP中通过EDI导入资料的时候出现【Microsoft Office Excel不能访问文件‘C:\Windows\TEMP\433....’

    问题描述: ERP中导入单据的时候报错,Microsoft Office Excel不能访问文件'C:\Windows\TEMP\433....可能的原因有:·文件名称或路径不存在,文件正被其他程序使 ...

  8. 内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档。 [问题点数:20分,结帖人wenyang2004]

    在环境里是没有问题的 就是发布网站后,会出现“/”应用程序中的服务器错误.--------------------------------------------------------------- ...

  9. 办公软件-Excel:Microsoft Office Excel 2003百科

    ylbtech-办公软件-Excel:Microsoft Office Excel 2003百科 Microsoft® Office Excel 2003 是一种电子表格程序,可提供对于 XML 的支 ...

随机推荐

  1. 十一. SpringCloud Alibaba

    1. SpringCloud Alibaba简介 1.1 为什么会出现SpringCloud Alibaba Spring Cloud Netflix项目进入到维护模式 什么是维护模式?=> 将 ...

  2. redis使用ssh密钥远控靶机

      首先说明一下我们的实验目的,我们这个实验需要利用一种公有密码,将公有密钥写入要攻击的服务器的redis数据库,然后使用我们自己的私钥进行远控肉鸡的操作. 实验环境:centos7(靶机,版本无太大 ...

  3. 浅谈Dotnet的数据定位和匹配

    Dotnet里,数据定位和匹配的相关编程现在变得很舒服.   最近项目紧,还要不停出差. 所以,写个短点的.最近经常用到的内容:数据定位和匹配.   数据定位 假设我们有这样一个数组: var arr ...

  4. 现代c++模板元编程:遍历tuple

    tuple是c++11新增的数据结构,通过tuple我们可以方便地把各种不同类型的数据组合在一起.有了这样的数据结构我们就可以轻松模拟多值返回等技巧了. tuple和其他的容器不同,标准库没有提供适用 ...

  5. 关于mysql事物和特性

    事务的 四个特征(ACID) 事务具有四个特征:原子性( Atomicity ).一致性( Consistency ).隔离性( Isolation )和持续性( Durability ).这四个特性 ...

  6. 王兴:为什么中国的 ToB 企业都活得这么惨?

    本文节选自美团创始人王兴的内部讲话.在讲话中,王兴罕见地分享了他对全球和中国宏观经济的理解,谈了他对 TO B 业务的深度思考. 我们今天讲一下餐饮生态业务部,以及对我们整个公司在整个业务发展过程中的 ...

  7. 攻防世界 reverse 进阶5-7

    5.re-for-50-plz-50  tu-ctf-2016 流程很简单,异或比较 1 x=list('cbtcqLUBChERV[[Nh@_X^D]X_YPV[CJ') 2 y=0x37 3 z= ...

  8. 扩展中国剩余定理(EXCRT)学习笔记

    扩展中国剩余定理(EXCRT)学习笔记 用途 求解同余方程组 \(\begin{cases}x\equiv c_{1}\left( mod\ m_{1}\right) \\ x\equiv c_{2} ...

  9. A. 1.划分数列

    A . 1. 划 分 数 列 A. 1.划分数列 A.1.划分数列 氵水沝淼㵘解析 先预处理,然后公式推(详见代码) Code #include <bits/stdc++.h> using ...

  10. [状压DP]子矩阵

    子 矩 阵 子矩阵 子矩阵 题目描述 给出如下定义: 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与列的相对顺序)被称为原矩阵的一个子矩阵 如,下面左图中选取第 2 . 4 ...