【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調度問題,按提示進行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM