AFL測試過程中出現(xiàn)“l(fā)ast new path : none yet (odd, check syntax!)”

在對源碼進行重新編譯之后,使用如下命令用AFL對其進行fuzz:

sudo afl-fuzz -i fuzz_in -o fuzz_out ./wx @@

其中,fuzz_in為輸入數(shù)據(jù)所在文件夾,@@表示從文件讀取輸入。但是這里的輸入是在fuzz_in文件夾下,因此命令行寫@@,程序會在./下找輸入,找不到自然不會出現(xiàn)正確結果。

image.png

命令行應改為

sudo afl-fuzz -i fuzz_in -o fuzz_out ./wx ./fuzz_in/testcase
image.png

下面對界面進行簡單的介紹:

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

image.png

這樣,可以同時開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命令查看總體測試情況:


image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容