如何使用AFL-FUZZ進行網路協議軟體的模糊測試

weixin_34019929發表於2017-09-11

AFL-FUZZ模糊測試神器,自由的遺傳學演算法,導致用例的生成格外有效。
但是AFL預設支援STDIN和FILE形式的用例,那麼如何對一個C/S架構的網路協議軟體進行模糊測試呢?

If testing a network service, modify it to run in the foreground and read from stdin.

ok,這裡是幫助文件的簡單描述。

以下,我要對我在實際中遇到的專案進行描述,從而介紹一下如何使用AFL-FUZZ對網路協議進行模糊測試。

首先,模糊測試區分黑盒測試和白盒測試,那麼如何快速進行模糊測試Demo呢?那自然是黑盒測試更簡單便捷,測試用例也更有效。

老規矩貼程式碼。
string data;
ifstream file;
file.open(argv[1]);
file>>data;

這樣,就可以從檔案中獲取用例,接著呢,自然是跟server段建立連線,併傳送。
這段程式碼就不獻醜了。

使用AFL進行模糊測試之前需要獲取一個有效的用例,OK,wireshark抓取,然後轉存Hex
然後使用python decode("hex") 儲存到檔案中,放到in目錄。

然後開始進行模糊測試
afl-g++ -o poc poc.c
afl-fuzz -i in -o out ./poc @@

最後短短2分鐘,竟然測出兩個bug,UAF 和 Double free。

相關文章