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就会加载进去。(未完待续。。)
MS10_087漏洞学习研究的更多相关文章
- MS08_067漏洞学习研究
p197 MS08-067漏洞渗透攻击 按照书上的设置做,exploit得到错误信息: Exploit failed [unreachable]: Rex::ConnectionRefused The ...
- KingView 6.53漏洞学习研究
类别:堆溢出 描述:此漏洞存在于KingView6.53软件的HistorySvr.exe进程中,这个软件服务程序在TCP 777端口监听时收到一个超长请求,导致堆缓冲区溢出从而执行任何代码. 参考资 ...
- PWN二进制漏洞学习指南
目录 PWN二进制漏洞学习指南 前言 前置技能 PWN概念 概述 发音 术语 PWN环境搭建 PWN知识学习途径 常见漏洞 安全机制 PWN技巧 PWN相关资源博客 Pwn菜鸡小分队 PWN二进制漏洞 ...
- BigPipe学习研究
BigPipe学习研究 from: http://www.searchtb.com/2011/04/an-introduction-to-bigpipe.html 1. 技术背景 FaceBook ...
- XSS漏洞学习笔记
XSS漏洞学习 简介 xss漏洞,英文名为cross site scripting. xss最大的特点就是能注入恶意的代码到用户浏览器的网页上,从而达到劫持用户会话的目的. 说白了就是想尽办法让你加载 ...
- Java 公平锁与非公平锁学习研究
最近学习研究了一下Java中关于公平锁与非公平锁的底层实现原理,总结了一下. 首先呢,通过其字面意思,公平与非公平的评判标准就是付出与收获成正比(和社会中的含义差不多一个意思).放到程序中,尤其是 在 ...
- 详解 Facebook 田渊栋 NIPS2017 论文:深度强化学习研究的 ELF 平台
这周,机器学习顶级会议 NIPS 2017 的论文评审结果已经通知到各位论文作者了,许多作者都马上发 Facebook/Twitter/Blog/ 朋友圈分享了论文被收录的喜讯.大家的熟人 Faceb ...
- C++的开源跨平台日志库glog学习研究(三)--杂项
在前面对glog分别做了两次学习,请看C++的开源跨平台日志库glog学习研究(一).C++的开源跨平台日志库glog学习研究(二)--宏的使用,这篇再做个扫尾工作,算是基本完成了. 编译期断言 动态 ...
- C++的开源跨平台日志库glog学习研究(二)--宏的使用
上一篇从整个工程上简单分析了glog,请看C++的开源跨平台日志库glog学习研究(一),这一篇对glog的实现代码入手,比如在其源码中以宏的使用最为广泛,接下来就先对各种宏的使用做一简单分析. 1. ...
随机推荐
- Django创建通用视图函数
想在我们有两个视图: def thinkingview(request): user = request.user if request.method == 'GET': return render( ...
- 为UWP应用开启回环访问权限
最近在项目中遇到UWP调用WCF的需求,考虑到UWP不能寄宿WCF服务(如果能,或者有类似技术,请告知),于是写了一个WPF程序寄宿WCF服务,然后再用UWP调用服务. 写的时候并没有碰到什么问题,直 ...
- 细品 - 逻辑回归(LR)
1. LR的直观表述 1.1 直观表述 今天我们来深入了解一个人见人爱,花见花开,工业界为之疯狂,学术界..额,好像学术界用的不多哎.不过没关系,就算学术界用的不多也遮不住它NB的光芒,它就是LR模型 ...
- LVS原理讲解
一.lvs介绍 LVS的英文全名为"Linux Virtual Server",即Linux虚拟服务器,是一个虚拟的四层交换器集群系统,根据目标地址和目标端口实现用户请求转发,本身 ...
- Spark 基本概念
Application:用户编写的 Spark 应用程序,包含驱动程序(Driver),和分布在集群中多个节点上运行的 Executor 代码,在执行过程中由一个或多个作业组成 Driver(驱动程序 ...
- Linux.挖矿.cpuminer方法记录
挖矿一般都要用高端显卡做矿机, 不是一般人玩得起 这里讲的是一种用CPU来挖矿的方法, 纯玩玩, 不要指望能致富喔 本方法在CentOS和树莓派原生系统上测试通过 先从git下载cpuminer gi ...
- java传值与传引用总结
基本数据类型 我们先来看一个代码 public class ParamTest { public static void main(String[] arge) { double percent = ...
- Android 6.0运行时权限
一.Runtime Permissions Android 6.0在手机安全方面做的一个处理就是增加了运行时权限(Runtime Permissions). 新的权限机制更好的保护了用户的隐私,Goo ...
- Java中的类变量、实例变量、类方法、实例方法的区别
类变量:形如static int a; 顾名思义,类变量可以理解为类的变量,类变量在类加载的时候就已经给它分配了内存空间,不同于实例变量(int a; ),实例变量是在该类创建对象的时候分配内存的.并 ...
- Linux下Git安装、配置
安装 首先查看下有没有安装过 输入 git,出现以下的,就说明安装过了. 否则, 执行命令:sudo apt-get install git 进行安装 安装好之后,还需要执行命令: git co ...