zoukankan      html  css  js  c++  java
  • 【AFL(一)】入门小白第一次测试

    引用师兄的话“一个AFL最简化的流程  ”fuzz+分析crash“就是这样入门的~”


    第一步:安装 AFL

    这一步其实没啥说的,就是官网下载最新版本,http://lcamtuf.coredump.cx/afl/

    然后解压,之后安装

    make
    sudo make install 

    第二步:插桩编译测试

    写个c程序afl_test.c,准备编译,代码如下:

    #include <stdio.h> 
    int main(int argc, char *argv[])
    {
        char buf[100]={0};
        gets(buf);//存在栈溢出漏洞
        printf(buf);//存在格式化字符串漏洞
        return 0;
    }

    使用命令 afl-gcc -g -o afl_test afl_test.c 编译

    成功之后创建两个文件夹,结果如图:

    【注】这里是插桩编译,之前以为会在之后fuzz的时候变,但是实际上不会变,引用师兄:“咱们习惯把afl_test称为 fuzzer,就是一种fuzz的“驱动器”,这个fuzzer是不变的0.0”


    第三步:开始Fuzz

    输入指令:afl-fuzz -i fuzz_in -o fuzz_out ./afl_test 开始fuzz

    这时候应该会出现一些问题

     解决方案

    1.查看报错,发现有个问题,需要 core_pattern

    2.切换root

    3.按提示输入指令切换 echo core >/proc/sys/kernel/core_pattern

    4.重新输入指令 afl-fuzz -i fuzz_in -o fuzz_out ./afl_test

    正常界面

    当如图界面,框中显示2的时候,可以 CTRL + C 停止


    第四步:分析crash

     使用xxd命令查看crash内容。

    错误分析:(2020年6月14日)

    1. [-] PROGRAM ABORT : Program 'example' not found or not executable
             Location : check_binary(), afl-fuzz.c:6894

     有时候出现这种错误,查看源码 6894行:

    是因为没有添加 ./ ,因为是要可执行文件,所以必须加 ./ ,否则会认为路径有问题。

     2.The current memory limit (50.0 MB) is too restrictive, causing an OOM
          fault in the dynamic linker. This can be fixed with the -m option. A
          simple way to confirm the diagnosis may be:

          ( ulimit -Sv $[49 << 10]; /path/to/fuzzed_app )

    这种情况就是内存设置太小了,或者程序所需要的内存太大了,一般情况下加上 “-m none” 就好了

    3. 有时候想要继续之前的afl,就需要用到之前的命令,然后把 -i 命令后面的输入文件夹改为 -

    也就是:

    afl-fuzz -m none -i - -o outfuzz/ ./example

     4. cpu调度问题,按提示进行

  • 相关阅读:
    SDK manager打不开解决办法(转载)
    debian安装中文字体
    rtos之定时器实现
    rtos学习之支持多优先级
    RT-Thread 的空闲线程和阻塞延时
    RT-Thread之对象容器
    RT-Thread 之临界段保护
    RT-Thread之线程实现就绪列表
    rtos 学习之链表
    RTOS 的学习之创建线程
  • 原文地址:https://www.cnblogs.com/wayne-tao/p/11739420.html
Copyright © 2011-2022 走看看