Bootstrap

漏洞分析之CVE-2010-2883(栈溢出)

之前调过一个关于浏览器的漏洞,因为第一次接触漏洞,所以很没有经验不知道最后怎么构造shellcode(特别是ROP链的写法),有幸再调试一个稍微简单点的CVE,具体查看poc中的ROP链编写。

0x00 漏洞简介

Adobe Acrobat和Reader都是美国Adobe公司开发的非常流行的PDF文件阅读器。
基于Window和Mac OS X的Adobe Reader和Acrobat 9.4之前的9.x版本,8.2.5之前的8.x版本的CoolType.dll中存在基于栈的缓冲区溢出漏洞。远程攻击者可借助带有TTF字体Smart INdependent Glyphlets (SING)表格中超长字段的PDF文件执行任意代码或者导致拒绝服务(应用程序崩溃)。

0x01 测试环境

虚拟机 winxp sp3 32bit
adobe Reader 9.3.4

利用OD以及IDA进行动静态结合的逆向分析

0x02 漏洞调试

0x1 基于字符串定位的漏洞分析方法

首先进行漏洞定位,这是分析的起始步骤,找到漏洞产生的现场,作为一个典型的stack overflow的漏洞,最典型的函数就是Strcat函数,同时本漏洞出现的原因是在堆SING表格的解析上,所以我们可以直接利用IDA分析(CoolType.dll文件)定位漏洞所在位置,alt+t搜索SING字符
这里写图片描述
利用IDA静态查看出问题的CoolType.dll动态链接库

.text:0803DCF9                 push    ebp
.text:0803DCFA                 sub     esp, 104h;分配栈空间0x104
.text:0803DD00                 lea     ebp, [esp-4];后面的strcat会把执行结果保存在ebp中
.text:0803DD04                 mov     eax, dword_8230FB8
.text:0803DD09                 xor     eax, ebp
.text:0803DD0B                 mov     [ebp+104h], eax
.text:0803DD11                 push    4Ch
.text:0803DD13                 mov     eax, offset loc_8184A54
.text:0803DD18                 call    __EH_prolog3_catch
.text:0803DD1D                 mov     eax, [ebp+arg_C]
.text:0803DD23                 mov     edi, [ebp+arg_0]
.text:0803DD29                 mov     ebx, [ebp+arg_4]
.text:0803DD2F                 mov     [ebp+var_28], edi
.text:0803DD32                 mov     [ebp+var_30], eax
.text:0803DD35                 call    sub_804172C
.text:0803DD3A                 xor     esi, esi
.text:0803DD3C                 cmp     dword ptr [edi+8], 3
.text:0803DD40                 mov     [ebp+var_4], esi
.text:0803DD43                 jz      loc_803DF00
.text:0803DD49                 mov     [ebp+var_1C], esi
.text:0803DD4C                 mov     [ebp+var_18], esi
.text:0803DD4F                 cmp     dword ptr [edi+0Ch], 1
.text:0803DD53                 mov     byte ptr [ebp+var_4], 1
.text:0803DD57                 jnz     loc_803DEA9
.text:0803DD5D                 push    offset aName    ; "name"

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;