我正在尝试了解 AFL-fuzzer,但我有一些问题:
- 我看到一个视频显示,例如,如果代码中有两个输入,那么在测试用例中,每一行都对应每个输入。那是对的吗?由于我想将完整的消息(例如 HTTP 请求)放入一个变量中,那么我该怎么做呢?
- 我不明白什么时候放@@。
例如,我正在尝试模糊此代码:
void Check_buffer(char* data)
{
char buffer[5];
strcpy(buffer, data);
}
int main(int argc, char* argv[])
{
char tmp_data = argv[1];
Check_buffer(argv[1]);
return 0;
}
我已经创建了 in 和 out 文件夹。在 in 文件夹中,我创建了一个包含以下内容的 txt 文件:“AAA”。
我执行的命令行是:afl-clang -fno-stack-protector -z execstack 4.c -o vul4
然后我运行:afl-fuzz -m none -i in/ -o out/ ./vul4 @@
我收到以下错误:perform_dry_run(), afl-fuzz.c:2852
如果我像这样运行命令:afl-fuzz -m none -i in/ -o out/ ./vul4 AA
它运行良好,但没有找到任何新路径,也没有发现崩溃。
此外,我正在尝试理解这个概念。如果我想在特定位置注入代码,我该怎么做?