【发布时间】:2022-12-19 22:24:04
【问题描述】:
我在 docker 容器(在 Ubuntu 20.04 上)中使用 AFL(版本 2.57b)来模糊测试几个 C 程序。但问题是,每当我对一个程序进行模糊测试时,它不会探索超过 1 条路径,输出是这样的:
在这种情况下,我专门使用此命令:
AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 afl-fuzz -i corpus/ -o afl_out -- ./afl-main @@
其中afl-main 是用afl-clang 编译的程序的名称,corpus 是包含输入文件的目录的名称。
在这种特定情况下,main.c 如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char* argv[]) {
if (argc < 1)
return 1;
if (strcmp(argv[1],"-s")==0)
printf("girls\n");
else if(strcmp(argv[1],"-k")==0)
printf("boys!\n");
else
printf("OMG!!\n");
return 0;
}
但是,正如我已经提到的,切换到其他程序不会改变输出中的任何内容。
还有一个类似的问题 here,但我已经在那里应用了建议的解决方案,当我从当前工作目录中的 corpus 目录提供输入时,我的二进制文件工作正常。
我尝试了几个C程序,看看是不是实现方式有问题,或者我传递输入的方式(通过标准输入),但是afl-fuzz输出还是一样。
我感谢任何帮助和提前发表评论。
【问题讨论】:
标签: c fuzzing american-fuzzy-lop