前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVE-2011-0104分析

CVE-2011-0104分析

作者头像
安恒网络空间安全讲武堂
发布2018-12-12 16:56:59
5140
发布2018-12-12 16:56:59
举报

正文

关于office的漏洞。先把进程attach上去然后打开exploit的文件。查看程序崩溃在这里:

查看一下栈回溯,发现此处函数地址的入口处为:0x300ce252

在此处下断点,重新运行程序。

查看esp的内容,此处为该函数的返回地址。

返回地址:0x13aa90。

在此处下内存访问断点。继续运行程序。发现程序断在了此处:

与此同时,esi所指向的字符串为:

这时候edi与ebp之间的偏移为:0x54,而所覆盖的字符串为0x300,远大于栈空间的大小,发生栈溢出。

再查看一下恶意文档的十六进制内容:

发现刚好与位于偏移0x670地址处的内容一样。

栈回溯一下:

查看调用情况:

0x306df0dc处调用了溢出函数。之后在此处下断点,然后查看一下该函数的参数:

三个参数依次为:0x13AA3B、0x300、0xFFFFEFE1。

我们可以根据前面所出现到的ebp:0x13AA3B大致猜测一下该函数的具体功能:第一参数为复制的目的地址,第二参数为复制的字节数,第三个参数为最大复制字节数。

现在再来理清一下程序执行的思路:

经过反复查看调用,发现整个程序执行流程是这样的:

从最开始crash的函数入口开始:

经跳转:

后调用函数:

后调用:

后就进入了溢出地址了。进入溢出地址后跳转到了最开始crash函数崩溃的地址了,我们在崩溃地址前下一个断点,执行:

eax的值为eax:0x51453844,ecx:0x00000006,此时的eax的地址是不存在的,所以会崩溃。因为poc样本是为2007所写的,2003并不适用,所以这里我们可以自己手动修改样本内容,达到shellcode的目的,此处我们可以抬高shellcode的位置,并把eax处的值修改为一个存在且可写的地址:

修改为如下:

其中0x308d5d8b为内存中一处call esp的地址,所以能够成功执行shellcode。

还有个后话,就是观察一下IDA中的伪代码:

Excel中的文件格式就不多说了,跟着上面所注释的地方可以看见两个格式类起着重要作用:TOOLBARDEF[0xA7]、CONTINUE[0x3C]。其中CONTINUE中的Len值0x300作为复制字节数。TOOLBARDEF中记录的Len值与cbtn字段控制着复制的目标地址。

修复

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 恒星EDU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档