MS10_087漏洞学习研究

类别:栈溢出,fileformat类别漏洞

描述: This module exploits a stack-based buffer overflow in the handling of the ‘pFragments‘ shape property within the Microsoft Word RTF parser.

参考资料:《Metasploit魔鬼训练营》p276-p286

利用的是exploit/windows/fileformat/ms10_087_rtf_pfragments_bof模块,它会生成一个.rtf文件,在靶机中打开后会执行payload。

我这里的payload是弹出计算器,成功实现!

MS10_087漏洞原理分析

用OllyDbg打开winword.exe,按f9运行。在word中打开测试文件ms10087.rtf,OllyDbg捕获异常:

出错的原因是什么呢?此处访问内存中0x00130000地址处,而通过alt+m可知0x00104000到0x0012ffff才是当前进程的栈空间,可知此次内存访问越界了。

根据经验,越界一般是想触发异常,让程序执行seh,那么seh应该在之前被覆盖了。

在OllyDbg标题栏可以看到此处的模块是mso,用IDA打开mso.dll分析。

但是ida反汇编似乎要花好久时间,我一个午觉睡醒了还卡卡的在分析,就先不弄这个ida的了。而且这一步的目的也只是分析出错处所在的函数入口,以查看栈中对应此函数的参数。

这里我们只要在函数入口处0x30ED4406(这里的地址为什么又固定了?而且还有很诡异的一点就是:通过ctrl+g可以来到0x30ED4406处,但是一移动这个地址就消失,本来push edi的机器码57和其他机器码组成了这里的add指令,不知道为什么两边的兄弟要这么强势。。)

源地址为0x1A54000C,目的地址为0x00123E98,长度为0x322b*4=0xC8AC个字节。目的地址离栈底0x0012ffff的距离0xC167少于复制长度,造成溢出,引发异常。

异常之后自然就是执行SEH,可是我这里被覆盖的SEH却是指向0xBDB98B85,可是这个地址并不能访问!

在这里,我是先在OllyDbg中打开winword.exe,然后再在word中打开ms10087.rtf。所以我想会不会是这里出问题,就另外不通过ollydbg直接打开winword.exe,然后打开ms10087.rtf,结果出乎意料,程序并没溢出计算器,而是直接关闭了。

但是直接双击打开ms10087.rtf还是能成功溢出的。

重新看了看书,说的挺模糊的。说是让修改下mso.dll,设置软断点。重启word,ollydbg就会加载进去。(未完待续。。)

时间: 2024-10-10 07:45:21

MS10_087漏洞学习研究的相关文章

C++的开源跨平台日志库glog学习研究(一)

作为C++领域中为数不多的好用.高效的.跨平台的日志工具,Google的开源日志库glog也算是凤毛麟角了.glog 是一个C++实现的应用级日志记录框架,提供了C++风格的流操作. 恰巧趁着五一我也学习研究了这个glog库,写个总结如下.走过路过的的各位牛人.高手可以忽略这篇文章了. 从code.google.com下载源码(在这里),在Visual Studio 2010中打开工程,如下: 可见只有四个工程,其中libglog和libglog_static分别是Windows下的动态库和静态

C++的开源跨平台日志库glog学习研究(二)--宏的使用

上一篇从整个工程上简单分析了glog,请看C++的开源跨平台日志库glog学习研究(一),这一篇对glog的实现代码入手,比如在其源码中以宏的使用最为广泛,接下来就先对各种宏的使用做一简单分析. 1. 日志输出宏 这里我们以一条最简单的日至输出为例说明: LOG(WARNING) << "This is a warning message"; 这里LOG是一个宏,其定义如下(logging.h line 487): #define LOG(severity) COMPACT

C++的开源跨平台日志库glog学习研究(三)--杂项

在前面对glog分别做了两次学习,请看C++的开源跨平台日志库glog学习研究(一).C++的开源跨平台日志库glog学习研究(二)--宏的使用,这篇再做个扫尾工作,算是基本完成了. 编译期断言 动态断言在调试过程中是一个很重要的手段,而且我们使用的也比较多.相应的,静态断言,也即是编译期断言随着模板编程.元编程的发展,也表现出了动态断言所没有的优势:在编译期完成断言检查,而不是等到运行时! 比如在glog的源码中,有如下代码(logging.h line 908): 1 template <b

面向医学图像分析的深度学习研究方案

面向医学图像分析的深度学习研究方案 这是一篇有关"深度学习在医学图像处理方面"的研究报告的第一节,主要包含研究对象,常用方法,深度学习简介,研究现状,研究重点. 在撰写报告时,我找到了两篇 Deep learning for BioInformation / BioMedicine 的综述文章,也一并分享出来: Deep Learning in Bioinformatic Applications of deep learning in biomedicine 1. 研究背景及意义 医

C++学习研究之一— —输入输出

cout 是在标准库中定义的输出流对象,‘<<’是重定向符. endl是叫操纵符,其实是个模板函数,在输出流中写入换行符,并且刷新输出缓存,而'\n'只是往输出流中写入了换行符,没有刷新输出缓存,在输出到屏幕时,没有明显的区别,但是如果写入到文件时,'\n'只是把内容写道了缓存中,并没有写入到磁盘,而endl则把内容写入到了磁盘. 如果两个加引号的字符数组中间没有除空格和注释以外的字符,预处理器会自动把两个字符数组连接起来,并成一个字符数组.因为预处理器会去掉空行.空格.和注释,所以两个字符数

libevent源码学习研究(libevent-0.1)

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">想学习研究libevent怎么设计的,学习它的思想,学习它的设计,奈何自己实力不够啊,于是另辟奇径,从最早的版本开始,一个版本一个版本的学习,不信吃不透它.</span> struct event { TAILQ_ENTRY (event) ev_read_next; TAI

Typecho-反序列化漏洞学习

目录 Typecho-反序列化漏洞学习 0x00 前言 0x01 分析过程 0x02 调试 0x03 总结 0xFF 参考 Typecho-反序列化漏洞学习 0x00 前言 补丁: https://github.com/typecho/typecho/commit/e277141c974cd740702c5ce73f7e9f382c18d84e#diff-3b7de2cf163f18aa521c050bb543084f 这里我下了1.0版本: git clone https://github.c

Adobe阅读器漏洞(adobe_cooltype_sing)学习研究

实验环境:Kali 2.0+Windows XP sp3+Adobe Reader 9.0.0 类别:缓冲区溢出 描述:这个漏洞针对Adobe阅读器9.3.4之前的版本,一个名为SING表对象中一个名为uniqueName的参数造成缓冲区溢出. 参考资料:<Metasploit魔鬼训练营>p286-p298 Adobe漏洞渗透过程: kali上使用windows/fileformat/adobe_cooltype_sing,载荷为windows/meterpreter/reverse_http

web安全如何系统学习研究

1. 系统,网络层 , 若密码,防火墙配置好,该用认证的时候别只用防火墙去顶,我见过防火墙规则失效,直接被连上了数据库的. root可以登录还是若密码的,不多说了, 没撒好讲的大家都知道 应用层. 搞清楚常见的SQL注入,XSS,CSRF. php+mysql的方式sql注入. php连接mysql的三种api(mysql,mysqli,pdo-mysql) 新项目别再使用 mysql_connect 了, 使用PDO,mysqli,参数绑定的方式. mysql_connect的sql查询通过抓