我正在尝试熟悉afl++的用法。我编写了一个简单的程序,如果argv1太长,它会因为缓冲区溢出而崩溃。
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_application ./afl_inputs/input.txt和./target_application < ./afl_inputs/z.txt运行应用程序本身,但在这两种情况下都不会崩溃。
问题
发布于 2021-01-13 11:46:19
它的结尾没有结果,因为您的命令是错误的,它没有执行任何模糊。
AFL++将从文件中获取测试用例,因此您需要修改源代码来执行模糊处理,例如打开一个文件,读取它,并使用带有文件内容的缓冲区执行strcpy。或者,添加一个gets以从stdin获取文件内容。在第一个例子中,命令应该是:
afl-fuzz -i afl_inputs -o afl_outputs ./target_application @@在第二个例子中:
afl-fuzz -i afl_inputs -o afl_outputs ./target_applicationhttps://stackoverflow.com/questions/65625591
复制相似问题