zoukankan      html  css  js  c++  java
  • AFL使用

    0x00 原理

    环境:kail linux

    选取AFL对libtiff(Libtiff 是一个用来读写标签图像文件格式)进行模糊测试,作为入门示例。——测试目标libtiff。

    将libtiff的编译程序指定为AFL的编译器(afl-gcc,afl-g++)进行编译,这样AFL编译器会对源码进行打桩。 最后通过afl-fuzz 启动编译出来的libtiff程序,并指定输入文件夹与输出文件夹。 AFL会读取输入文件,进行变异喂给应用程序,最后将crash等输出信息保存到输出文件夹。

    打桩原理:

    源码:

    while (go):
    
        req = get_request()
    
        process(req)

    AFL插入后代码:

    while (go)
    
        put_request(read(file)) // AFL
    
        req = get_request()
    
        process(req)
    
        notify_fuzzer() // AFL

     

    0x01 AFL安装

    下载:wget http://lcamtuf.coredump.cx/afl.tgz tar xfz afl.tgz

    解压:tar xfz afl.tgz

    进入文件夹:cd afl-1.88b (看下载的版本,不一定是1.88)

    安装: sudo make install

    0x02 编译libtiff

    下载:wget http://download.osgeo.org/libtiff/tiff-3.8.2.tar.gz

    解压:tar zxvf  tiff-3.8.2.tar.gz

    加入文件夹: cd tiff-3.8.2

    指定编译程序为AFL的编译器:export CC=afl-gcc (设置linux环境变量,env查看)

                                                                       export CXX=afl-g++

     

    编译:./configure –disable-shared

               make clean

               make

    编译完成后会在tools文件夹下面生成可执行程序如bmp2tiff

     

    0x03 开始fuzzing

    建立输入输出文件夹:mkdir input output

    将初始文件放入到输入文件夹中: cp bmp/full/images/* input/

    (也可在网上下载,关键在于把初始文件放入到input文件夹)

     

    开始fuzzing:  afl-fuzz -i input –o output /root/tiff-3.8.2/tools/bmp2tiff @@ /dev/null(通过afl-fuzz启动应用程序,-i指定应用程序的输入,-o指定fuzzing结果的输出,/root/tiff-3.8.2/tools/bmp2tiff通过AFL编译生成的应用程序路径,/dev/null不输出错误信息到屏幕中)

    开发fuzzing后会进入这样一个界面

     

    Output中生成这些文件,一些crashes和hangs文件等

     

    0x04 小结

             AFL非常适合于linux下有源码程序的测试,在linux下环境搭建简单,使用方便。对于crash的分析与对无源码程序的fuzz有待后续深入研究。

    0x05 参考资料

    http://files.meetup.com/17933012/2015-03-introduction-fuzzing-with-afl.pdf

    http://lcamtuf.coredump.cx/afl/README.txt

    http://lcamtuf.coredump.cx/afl/

  • 相关阅读:
    day13
    day11作业
    day12
    小结2
    iOS-常见问题
    iOS-ASIHTTPRequest缓存机制
    iOS-文件断点续传
    iOS-Http : GET : POST
    iOS-通信录
    iOS-汉字排序
  • 原文地址:https://www.cnblogs.com/alert123/p/4916481.html
Copyright © 2011-2022 走看看