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。