首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用afl++时出错

使用afl++时出错
EN

Stack Overflow用户
提问于 2021-01-08 08:25:26
回答 1查看 456关注 0票数 1

我正在尝试熟悉afl++的用法。我编写了一个简单的程序,如果argv1太长,它会因为缓冲区溢出而崩溃。

代码语言:javascript
复制
int main(int argc, char *argv[])
{
    char buffer[4];
    
    if(argc == 2)
    {
        strcpy(buffer, argv[1]);    
    }
    
    return 0;
}

我预计afl++很快就会发现这起事故,但在运行了相当一段时间,也许大约2个小时后,我还没有看到任何崩溃被记录下来。

我使用的命令行是

代码语言:javascript
复制
afl-fuzz -i afl_inputs -o afl_outputs -- ./target_application

这个程序是用

代码语言:javascript
复制
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运行应用程序本身,但在这两种情况下都不会崩溃。

问题

  • 我做错了什么?既然afl++ fuzzes stdin,我可以假设如果没有指定"@@“,argv1应该填充随机值吗?虽然我的假设似乎是错误的,但
  • 做的"@@“意味着它将从我的输入文件中读取并将它读取的内容放入命令行(根据我从文档中读取的内容,似乎是这样)?
EN

回答 1

Stack Overflow用户

发布于 2021-01-13 11:46:19

它的结尾没有结果,因为您的命令是错误的,它没有执行任何模糊。

AFL++将从文件中获取测试用例,因此您需要修改源代码来执行模糊处理,例如打开一个文件,读取它,并使用带有文件内容的缓冲区执行strcpy。或者,添加一个gets以从stdin获取文件内容。在第一个例子中,命令应该是:

代码语言:javascript
复制
afl-fuzz -i afl_inputs -o afl_outputs ./target_application @@

在第二个例子中:

代码语言:javascript
复制
afl-fuzz -i afl_inputs -o afl_outputs ./target_application
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65625591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档