Fuzzing 使用afl+时出错+;
我正在努力熟悉afl++的用法。我编写了一个简单的程序,如果argv[1]太长,它会由于缓冲区溢出而崩溃Fuzzing 使用afl+时出错+;,fuzzing,american-fuzzy-lop,Fuzzing,American Fuzzy Lop,我正在努力熟悉afl++的用法。我编写了一个简单的程序,如果argv[1]太长,它会由于缓冲区溢出而崩溃 int main(int argc, char *argv[]) { char buffer[4]; if(argc == 2) { strcpy(buffer, argv[1]); } return 0; } 我希望afl++很快就能发现这个崩溃,但在运行了相当长的一段时间后,大概2个小时左右,我还没有看
int main(int argc, char *argv[])
{
char buffer[4];
if(argc == 2)
{
strcpy(buffer, argv[1]);
}
return 0;
}
我希望afl++很快就能发现这个崩溃,但在运行了相当长的一段时间后,大概2个小时左右,我还没有看到任何崩溃被记录下来
我使用的命令行是
afl-fuzz -i afl_inputs -o afl_outputs -- ./target_application
该程序是用
CC=afl-clang-fast++ AFL_HARDEN=1 make
有趣的是,当我对这个问题进行故障排除时,我在输入文件中放入了一些ASCII字符,例如一个字符“Z”,并修改了命令行,例如afl fuzz-I afl_inputs-o afl_outputs--./target_application@
和afl++将立即终止,说明其中一个测试用例导致了崩溃
此外,我尝试使用输入文件/target\u application./afl\u inputs/input.txt
和/target\u application
运行应用程序本身,但在这两种情况下都不会崩溃
问题
- 我做错了什么
- 由于afl++模糊了stdin,如果我没有指定“@”,我可以假设argv[1]应该填充随机值吗?虽然看起来我的假设是错误的
- “@@”是否意味着它将从我的输入文件中读取内容并将其放入命令行(从我从文档中读取的内容来看,似乎是这样的)
afl-fuzz -i afl_inputs -o afl_outputs ./target_application @@
在第二个例子中:
afl-fuzz -i afl_inputs -o afl_outputs ./target_application