类别:栈溢出,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就会加载进去。(未完待续。。)

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

  1. MS08_067漏洞学习研究

    p197 MS08-067漏洞渗透攻击 按照书上的设置做,exploit得到错误信息: Exploit failed [unreachable]: Rex::ConnectionRefused The ...

  2. KingView 6.53漏洞学习研究

    类别:堆溢出 描述:此漏洞存在于KingView6.53软件的HistorySvr.exe进程中,这个软件服务程序在TCP 777端口监听时收到一个超长请求,导致堆缓冲区溢出从而执行任何代码. 参考资 ...

  3. PWN二进制漏洞学习指南

    目录 PWN二进制漏洞学习指南 前言 前置技能 PWN概念 概述 发音 术语 PWN环境搭建 PWN知识学习途径 常见漏洞 安全机制 PWN技巧 PWN相关资源博客 Pwn菜鸡小分队 PWN二进制漏洞 ...

  4. BigPipe学习研究

    BigPipe学习研究   from: http://www.searchtb.com/2011/04/an-introduction-to-bigpipe.html 1. 技术背景 FaceBook ...

  5. XSS漏洞学习笔记

    XSS漏洞学习 简介 xss漏洞,英文名为cross site scripting. xss最大的特点就是能注入恶意的代码到用户浏览器的网页上,从而达到劫持用户会话的目的. 说白了就是想尽办法让你加载 ...

  6. Java 公平锁与非公平锁学习研究

    最近学习研究了一下Java中关于公平锁与非公平锁的底层实现原理,总结了一下. 首先呢,通过其字面意思,公平与非公平的评判标准就是付出与收获成正比(和社会中的含义差不多一个意思).放到程序中,尤其是 在 ...

  7. 详解 Facebook 田渊栋 NIPS2017 论文:深度强化学习研究的 ELF 平台

    这周,机器学习顶级会议 NIPS 2017 的论文评审结果已经通知到各位论文作者了,许多作者都马上发 Facebook/Twitter/Blog/ 朋友圈分享了论文被收录的喜讯.大家的熟人 Faceb ...

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

    在前面对glog分别做了两次学习,请看C++的开源跨平台日志库glog学习研究(一).C++的开源跨平台日志库glog学习研究(二)--宏的使用,这篇再做个扫尾工作,算是基本完成了. 编译期断言 动态 ...

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

    上一篇从整个工程上简单分析了glog,请看C++的开源跨平台日志库glog学习研究(一),这一篇对glog的实现代码入手,比如在其源码中以宏的使用最为广泛,接下来就先对各种宏的使用做一简单分析. 1. ...

随机推荐

  1. Django创建通用视图函数

    想在我们有两个视图: def thinkingview(request): user = request.user if request.method == 'GET': return render( ...

  2. 为UWP应用开启回环访问权限

    最近在项目中遇到UWP调用WCF的需求,考虑到UWP不能寄宿WCF服务(如果能,或者有类似技术,请告知),于是写了一个WPF程序寄宿WCF服务,然后再用UWP调用服务. 写的时候并没有碰到什么问题,直 ...

  3. 细品 - 逻辑回归(LR)

    1. LR的直观表述 1.1 直观表述 今天我们来深入了解一个人见人爱,花见花开,工业界为之疯狂,学术界..额,好像学术界用的不多哎.不过没关系,就算学术界用的不多也遮不住它NB的光芒,它就是LR模型 ...

  4. LVS原理讲解

    一.lvs介绍 LVS的英文全名为"Linux Virtual Server",即Linux虚拟服务器,是一个虚拟的四层交换器集群系统,根据目标地址和目标端口实现用户请求转发,本身 ...

  5. Spark 基本概念

    Application:用户编写的 Spark 应用程序,包含驱动程序(Driver),和分布在集群中多个节点上运行的 Executor 代码,在执行过程中由一个或多个作业组成 Driver(驱动程序 ...

  6. Linux.挖矿.cpuminer方法记录

    挖矿一般都要用高端显卡做矿机, 不是一般人玩得起 这里讲的是一种用CPU来挖矿的方法, 纯玩玩, 不要指望能致富喔 本方法在CentOS和树莓派原生系统上测试通过 先从git下载cpuminer gi ...

  7. java传值与传引用总结

    基本数据类型 我们先来看一个代码 public class ParamTest { public static void main(String[] arge) { double percent = ...

  8. Android 6.0运行时权限

    一.Runtime Permissions Android 6.0在手机安全方面做的一个处理就是增加了运行时权限(Runtime Permissions). 新的权限机制更好的保护了用户的隐私,Goo ...

  9. Java中的类变量、实例变量、类方法、实例方法的区别

    类变量:形如static int a; 顾名思义,类变量可以理解为类的变量,类变量在类加载的时候就已经给它分配了内存空间,不同于实例变量(int a; ),实例变量是在该类创建对象的时候分配内存的.并 ...

  10. Linux下Git安装、配置

    安装 首先查看下有没有安装过 输入 git,出现以下的,就说明安装过了. 否则, 执行命令:sudo apt-get install git    进行安装 安装好之后,还需要执行命令: git co ...