在對源碼進行重新編譯之后,使用如下命令用AFL對其進行fuzz:
sudo afl-fuzz -i fuzz_in -o fuzz_out ./wx @@
其中,fuzz_in為輸入數(shù)據(jù)所在文件夾,@@表示從文件讀取輸入。但是這里的輸入是在fuzz_in文件夾下,因此命令行寫@@,程序會在./下找輸入,找不到自然不會出現(xiàn)正確結果。

命令行應改為
sudo afl-fuzz -i fuzz_in -o fuzz_out ./wx ./fuzz_in/testcase

下面對界面進行簡單的介紹:
process timing
這里展示了當前fuzzer的運行時間、最近一次發(fā)現(xiàn)新執(zhí)行路徑的時間、最近一次崩潰的時間、最近一次超時的時間。
值得注意的是第2項,最近一次發(fā)現(xiàn)新路徑的時間。如果由于目標二進制文件或者命令行參數(shù)出錯,那么其執(zhí)行路徑應該是一直不變的,所以如果從fuzzing開始一直沒有發(fā)現(xiàn)新的執(zhí)行路徑,那么就要考慮是否有二進制或者命令行參數(shù)錯誤的問題了。對于此狀況,AFL也會智能地進行提醒
overall results
這里包括運行的總周期數(shù)、總路徑數(shù)、崩潰次數(shù)、超時次數(shù)。
其中,總周期數(shù)可以用來作為何時停止fuzzing的參考。隨著不斷地fuzzing,周期數(shù)會不斷增大,其顏色也會由洋紅色,逐步變?yōu)辄S色、藍色、綠色。一般來說,當其變?yōu)榫G色時,代表可執(zhí)行的內容已經很少了,繼續(xù)fuzzing下去也不會有什么新的發(fā)現(xiàn)了。此時,我們便可以通過Ctrl-C,中止當前的fuzzing
stage progress
這里包括正在測試的fuzzing策略、進度、目標的執(zhí)行總次數(shù)、目標的執(zhí)行速度
執(zhí)行速度可以直觀地反映當前跑的快不快,如果速度過慢,比如低于500次每秒,那么測試時間就會變得非常漫長。如果發(fā)生了這種情況,那么我們需要進一步調整優(yōu)化我們的fuzzing
關于并發(fā)執(zhí)行:
要提高AFL測試效率,可以使用并發(fā)測試。
查看自己機器CPU cores:
cat /proc/cpuinfo| grep "cpu cores"| uniq

這樣,可以同時開4個fuzzer進行測試:-M指定主fuzzer,-S指定從fuzzer,sync_out為同步文件夾,下面有各個fuzzer的目錄。
注意:sync_out命名不能更改!
afl-fuzz -i fuzz_in -o sync_out -M fuzzer1 ./afl_test fuzz_in/testcase
afl-fuzz -i fuzz_in -o sync_out -S fuzzer2 ./afl_test fuzz_in/testcase
afl-fuzz -i fuzz_in -o sync_out -S fuzzer3 ./afl_test fuzz_in/testcase
通過afl-whatsup命令查看總體測試情況:
