AFL测试过程中出现“last new path : none yet (odd, check syntax!)”

在对源码进行重新编译之后,使用如下命令用AFL对其进行fuzz:

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

其中,fuzz_in为输入数据所在文件夹,@@表示从文件读取输入。但是这里的输入是在fuzz_in文件夹下,因此命令行写@@,程序会在./下找输入,找不到自然不会出现正确结果。

image.png

命令行应改为

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

下面对界面进行简单的介绍:

process timing

这里展示了当前fuzzer的运行时间、最近一次发现新执行路径的时间、最近一次崩溃的时间、最近一次超时的时间。

值得注意的是第2项,最近一次发现新路径的时间。如果由于目标二进制文件或者命令行参数出错,那么其执行路径应该是一直不变的,所以如果从fuzzing开始一直没有发现新的执行路径,那么就要考虑是否有二进制或者命令行参数错误的问题了。对于此状况,AFL也会智能地进行提醒

overall results

这里包括运行的总周期数、总路径数、崩溃次数、超时次数。

其中,总周期数可以用来作为何时停止fuzzing的参考。随着不断地fuzzing,周期数会不断增大,其颜色也会由洋红色,逐步变为黄色、蓝色、绿色。一般来说,当其变为绿色时,代表可执行的内容已经很少了,继续fuzzing下去也不会有什么新的发现了。此时,我们便可以通过Ctrl-C,中止当前的fuzzing

stage progress

这里包括正在测试的fuzzing策略、进度、目标的执行总次数、目标的执行速度

执行速度可以直观地反映当前跑的快不快,如果速度过慢,比如低于500次每秒,那么测试时间就会变得非常漫长。如果发生了这种情况,那么我们需要进一步调整优化我们的fuzzing


关于并发执行:

要提高AFL测试效率,可以使用并发测试。
查看自己机器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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。