继续之前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. <<< Jquery查找元素、选择器使用方法总结

    $("#myDiv"); //根据给定的ID匹配一个元素,用于搜索id 属性中给定的值,id属性必须是唯一的 $("div"); //根据给定的元素名匹配所有元 ...

  2. 迅雷9、迅雷极速版之迅雷P2P加速:流量吸血鬼?为什么你装了迅雷之后电脑会感觉很卡很卡?

    原文地址:http://www.whosmall.com/post/90 关闭极速版迅雷ThunderPlatform.exe进程 ThunderPlatform.exe目的:利用P2P技术进行用户间 ...

  3. awk删除文件第一列

    awk删除文件第一列 1.采用awk awk '{$1="";print $0}' file 2.采用sed sed -e 's/[^]* //' file sort -R fil ...

  4. C#FTP操作类含下载上传删除获取目录文件及子目录列表等等

    ftp登陆格式  : ftp://[帐号]:[密码]@[IP]:[端口] ftp://用户名:密码@FTP服务器IP或域名:FTP命令端口/路径/文件名 直接上代码吧,根据需要选择函数,可根据业务自己 ...

  5. css3 动画效果 定义和绑定执行

    首先要定义一个动画效果  keyframes 关键字 这里动画效果执行完毕后 恢复本身的css样式  有的动画效果 移动到位置 要保持 就需要写好css 元素的位置 css里直接写  (这里是一般的 ...

  6. Another app is currently holding the yum lock

    摘要 在使用yum安装的时候,出现该error. 错误 Another app is currently holding the yum lock; waiting for it to exit... ...

  7. 关于Spring中的<context:annotation-config/>配置

    当我们需要使用BeanPostProcessor时,直接在Spring配置文件中定义这些Bean显得比较笨拙,例如: 使用@Autowired注解,必须事先在Spring容器中声明AutowiredA ...

  8. oracle创建用户

    --首先用管理员的帐户登录(要有修改用户的权限)system,默认数据库orcl. CREATE USER lcs IDENTIFIED BY lcs default tablespace lics_ ...

  9. C# *= 运算顺序

    a *= a + b *c; 不管等号右边有没有括号,总是先算右边: 即等价于 a = a *(a + b*c); using System; using System.Collections.Gen ...

  10. (zz)linux awk

    博文转载自http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html 谢谢原作者.条理很清楚,由浅入深.敲了每一行命令,正确无误. ...