继续之前hackteam的flash漏洞,这次的对象为cve-2015-5199,遂做一下记录。

首先,在该exp中TryExpl函数为漏洞的触发函数,该函数也为本次调试的主要对象,函数的开始首先创建两个Array对象a和_gc.

此处对Array函数下断,对象断在array。

函数返回之后a  array对象生成,地址为04115a30,对于Array对象在其偏移+10的地方保存了实际Array内容的地址。此处为03d800d8,03d800d8+8即可观察到array中实际保存的内容。

Gc array对象生成,此处为04115a30。

将a(喷射对象)保存在_gc中,此处主要是考虑到之后会有大量的释放操作,以此来保护a对象内存。

gc.push(a),push之后,a对象的地址保存到了_gc对象中,如下图所示。

开始对a进行循环赋值,一共操作5a次。

生成一次之后,得到一组MyClass2,ByteArray,MyClass2的内存结构。

A对象中对应的两个myclass2和一个array

对应的myclass2

具体对MyClass2结构的布局如下

接下来详细分析一个MyClass2对象的生成过程,下图的call eax jitcode中,实现对MyClass2对象的生成。

该处完成0x11223344赋值,该处jit结束之后,myclass2已经完成赋值。

生成的Bytearray。

生成的第二个Myclass2

循环几次之后a中保存的多组结构。

如下图图所示,最后生成的a ,注意由于内存分配的原因,可以发现,在分配的一开始,每一组myclass2,array,myclass2在内存中并不是连续的,如下图所示,之后内存的分配趋于稳定,最后形成的每一组中的这三个对象在内存空中内存布局连续,这也是为什么之后的exp中循环赋值的时候是从数组后面往前赋值的原因,因为后面内存连续。

a中内存布局完成之后,进入以下循环,在该循环中,会依次将a中Bytearray赋值给_ba,之后MyClass对象的赋值将导致valueof函数的调用。

对应的valuefo函数,该函数中对ba.length的修改,将导致a中对应的Array对象的内存释放,之后代码中的一个循环操作完成对释放对象的站位。

_va Array对象生成,此处的地址为041152e0。

同样申城的_va对象会进行gc.push(_va)的操作。

对_ba.length 进行1100赋值操作。

改变长度之后会导致_ba中的内存重新分配,因为_ba中的值其实就是a中所有的ByteArray结构,所以对于一组Myclass2,ByteArray,Myclass2的连续空间而言,相当于中间的ByetArray

直接被释放。

因为发释放时循环从a array的后向前,如下图所示。

结合之前的中a array的结构,可以确定第一个释放的ByteArra结构的地址为0483b8c9

站位之后可以发现,此时0483b8c9处指向的地址和正常的ByteArray已经不同,此时已被

释放。

释放之后,生成vector.<uint>(0x3f0)用于站位,此处0x3f0*4 = fc0,内存对齐之后,为0x1000,正好满足站位的条件。

查看_va的内存,可以发现,此时vector对象的地址040f8ab1已经保存在_va中,在该对象偏移1c处保存了vector的内存空间的地址,不过同样该处的地址需要>>16的操作,最后vector在0x0489c000处,可以看到在偏移0处正好为vector的长度3f0.

此时释放的ByteArray空间已经被站位,当返回的时候,0x40的值会被赋值给_ba[3]中指向ByteArray的地址,因为此处对于ByteArray的引用存在问题,依然指向old的ByteArray,此时ByteArray内存的地址实际上是我们站位的vector,此时的赋值会将0x40赋值到vector对象长度地址的高位处,从而导致一个超长的vector产生,如下图下断点。

运行之后,产生一个超长的vector

此时已经赋值成功。

cve-2015-5199漏洞分析的更多相关文章

  1. 漏洞分析:CVE 2021-3156

    漏洞分析:CVE 2021-3156 漏洞简述 漏洞名称:sudo堆溢出本地提权 漏洞编号:CVE-2021-3156 漏洞类型:堆溢出 漏洞影响:本地提权 利用难度:较高 基础权限:需要普通用户权限 ...

  2. CVE-2014-1767 漏洞分析(2015.1)

    CVE-2014-1767 漏洞分析 1. 简介 该漏洞是由于Windows的afd.sys驱动在对系统内存的管理操作中,存在着悬垂指针的问题.在特定情况下攻击者可以通过该悬垂指针造成内存的doubl ...

  3. Java反序列化漏洞分析

    相关学习资料 http://www.freebuf.com/vuls/90840.html https://security.tencent.com/index.php/blog/msg/97 htt ...

  4. CVE-2016-10190 FFmpeg Http协议 heap buffer overflow漏洞分析及利用

    作者:栈长@蚂蚁金服巴斯光年安全实验室 -------- 1. 背景 FFmpeg是一个著名的处理音视频的开源项目,非常多的播放器.转码器以及视频网站都用到了FFmpeg作为内核或者是处理流媒体的工具 ...

  5. PHPCMS \phpcms\modules\member\index.php 用户登陆SQL注入漏洞分析

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: POC http://localhost/p ...

  6. FFmpeg任意文件读取漏洞分析

    这次的漏洞实际上与之前曝出的一个 CVE 非常之类似,可以说是旧瓶装新酒,老树开新花. 之前漏洞的一篇分析文章: SSRF 和本地文件泄露(CVE-2016-1897/8)http://static. ...

  7. Intel CPU 漏洞分析

    Intel CPU漏洞分析报告 预备知识 存储分级 由于计算机存储分级的特性(第一级:寄存器,第二级:高速缓存,第三级:内存,第四级:磁盘),每一级之间的访问速度差距高达数量级.所以处理器会将用到的数 ...

  8. Elasticsearch 核心插件Kibana 本地文件包含漏洞分析(CVE-2018-17246)

    不久前Elasticsearch发布了最新安全公告, Elasticsearch Kibana 6.4.3之前版本和5.6.13之前版本中的Console插件存在严重的本地文件包含漏洞可导致拒绝服务攻 ...

  9. ThinkCMF X2.2.2多处SQL注入漏洞分析

       1.     漏洞描述 ThinkCMF是一款基于ThinkPHP+MySQL开发的中文内容管理框架,其中X系列基于ThinkPHP 3.2.3开发,最后更新到2.2.2版本.最近刚好在渗透测试 ...

  10. 看个AV也中招之cve-2010-2553漏洞分析

    试想:某一天,你的基友给你了一个视频文件,号称是陈老师拍的苍老师的老师题材的最新电影.avi,你满心欢喜,在确定文件格式确实为avi格式后,愉快的脱下裤子准备欣赏,打开后却发现什么也没有,而随后你的基 ...

随机推荐

  1. MQTT 消息 发布 订阅

    当连接向一个mqtt服务器时,clientId必须是唯一的.设置一样,导致client.setCallback总是走到 connectionLost回调.报connection reset.调查一天才 ...

  2. HTML中超出文本使用省略号替代的CSS样式

    a{ display: block; /*定义显示形式*/ overflow: hidden; /*截取超出字符*/ text-overflow: ellipsis; /*超出字符以…代替*/ whi ...

  3. zoom在css中的作用

    zoom:1 zoom:1;属性是IE浏览器的专有属性,Firefox等其它浏览器不支持.它可以设置或检索对象的缩放比例. 兼容IE6.IE7.IE8浏览器,经常会遇到一些问题,可以使用zoom:1来 ...

  4. QQ等级表

    什么是QQ等级呢? 2003年,腾讯公司推出了QQ等级制度 . 最早是以小时,来计算的,那段时间,绝大部分QQ用户都在挂QQ,之后就有不少媒体指责其浪费能源,在有关部门的介入下,腾讯公司将QQ等级变为 ...

  5. 如何将EXCEL表导入ORACLE数据库中?【转】

    来源:https://zhidao.baidu.com/question/383828330.html?qbl=relate_question_2&word=excel%20%B1%ED%CA ...

  6. C C++ 语法

    非常酷的网站: http://yige.org/cpp/defined_data_types.php 在Linux下有一个目录/proc/$(pid),这个目录保存了进程号为pid的进程运行时的所有信 ...

  7. javascript数据结构与算法-- 二叉树

    javascript数据结构与算法-- 二叉树 树是计算机科学中经常用到的一种数据结构.树是一种非线性的数据结构,以分成的方式存储数据,树被用来存储具有层级关系的数据,比如文件系统的文件,树还被用来存 ...

  8. 安装yii2时出错 Invalid Parameter – yii\base\InvalidParamException

    最近composer安装yii2的时候页面报了这个错,应该是bower的前端资源位置改变的缘故! Invalid Parameter – yii\base\InvalidParamException ...

  9. ASP.NET 对于文件的下载与上传

    /// <summary> /// 下载附件查看 /// </summary> /// <param name="sender"></pa ...

  10. 在Heroku部署时,无法加载 css,js,图片资源解决办法

    解决方案: 首先查看Gemfile, 确保group :production do 里添加了 gem "rails_12factor", '0.0.2' 然后在本地执行 rails ...