fuzzing工具之AFL的安裝與使用

fuzzing工具之AFL的安裝與使用

AFL介紹:

AFL即American Fuzzy Lop是當今使用最廣泛的fuzzer,這個工具在程序執行前對程序源碼進行插樁(instrumentation),以便在程序執行過程中實時獲取程序的執行情況。AFL用遺傳算法對程序的輸入進行變異,用邊覆蓋(edge converage)來測試fuzzing的性能。

在執行過程中,AFL向被測程序中輸入input,然後獲取程序的覆蓋率,將覆蓋率大的input保留下來進行變異,然後在下一輪測試中向被測程序中輸出這些變異後的input,一直到程序的覆蓋率在較長的一段時間不能繼續增大爲止。

通常我們跑AFL的時候需要跑幾十個小時,AFL最後會將結果保存在output文件中。

AFL的安裝與使用

我們首先從github上下載afl,
然後運行下面命令來安裝:

make
make install

進行fuzzing

在安裝好afl之後,我們就可以來fuzzing程序了,但是在fuzzing程序之前,我們需要對程序進行插樁。運行下邊的命令

./configure CC=“afl-gcc” CXX=“afl-g++”

接下來我們以sam2p爲例,我們可以運行下面的命令對程序進行插樁。

git clone https://github.com/pts/sam2p.git //下載sam2p
cd sam2p //進入待測試文件目錄

1.修改程序的編譯環境換成afl的gcc或者g++(如果是C++程序,且用g++而不是gcc進行編譯,則修改CXX):
在這裏插入圖片描述
代碼爲:

./configure CC="afl-gcc" CXX=" afl-g++"  CFLAGS="-fsanitize=address -ggdb - fno- omit- frame - pointer - fno- optimize-sibling-calls"  CXXFL AGS="-fsanitize=address -ggdb - fno-omit- frame- pointer - fno-optimize- sibling-caLLs"

2.然後把程序 make;makeinstall一下。
3.然後在afl裏新建input文件夾,input文件夾需要自定義初始化的demo,也可以去網絡上下載別人提供的demo。
4.然後運行:

afl-fuzz -i ~/input -o ~/poutput sam2p @@

#大功告成:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章