0X00: 漏洞描述
CVE-2011-0104是Microsoft Excel在解析XLB文件中的TOOLBARDEF Record时存在栈溢出漏洞,导致可执行任意代码。
0X01: 分析环境
操作系统:Windows XP SP3
调试器:OllyDbg
反汇编器:IDA Pro
漏洞软件:EXCEL 2003
0X02:基本信息
WinDbg分析
首先打开EXCEL软件 然后用WinDbg附加进程
然后使用EXCEL加载漏洞文件 发现断在了0x300e06f7
OD分析
我们使用OD打开EXCEL 在0x300e06f7处下断点 F9加载一个正常的EXCEL表格 进行栈回溯 看一下是那个函数调用奔溃函数 并给这里下断点(即0x300e5ad)
然后重新加载兵使用EXCEL打开漏洞文件 我们发现断在了刚才的断点处 并发现分配了0x60的栈空间
单步执行到0x300e05b3 数据窗口跟随ESP的值并下内存断点
F9运行到这里后下断点
单步运行之后发现栈空间被POC覆盖
IDA分析
我们用IDA打开EXCEL软件 然后回到复制栈数据的0x300de834 我们可以在OD中发现该函数位于)0x300de7ec函数中
在IDA中分析该函数 可以发现溢出点 循环复制导致溢出
F5查看伪代码 可以发现是使用了memcpy函数导致溢出
可以再回到OD中查看崩溃前共复制了0x300个字节 而前面我们提到过只分配了0x60个字节 所以导致溢出
0X03: 漏洞修复
我们先来查看一下memcpy的函数原型
1 | 函数原型 |
所以是函数设置的长度出了问题导致溢出 我们修改即可
0X04: 经验总结
之前也接触过windbg 一路从逆向走过来的 就是用的不太多 这次算是初步接触 虽然还是基本用OD动态调试 然后结合IDA分析 依然感觉OD好用 利用OD+IDA分析 可以很好的增加效率