首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AFL-fuzz没有发现任何崩溃

AFL-fuzz没有发现任何崩溃
EN

Stack Overflow用户
提问于 2021-09-18 17:19:12
回答 1查看 331关注 0票数 0

我第一次尝试AFL,出于这个原因,我找到了一个非常简单的易受攻击的C代码,可以用来测试AFL。

问题中的C代码是

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>

int main(int argc, char * argv[]){
        char name[10];

        if ( argc > 1 ){
                strcpy(name, argv[1]);
                printf("HELLO %s\n", name);
        }

        return 0;
}

我通过运行afl-gcc test.c -o test来编译该代码,并对其进行了测试,以确保它在预期的情况下崩溃(运行./test $(python3 -c "print('A'*26)")将给出一个预期的分段错误)。

这里的问题是,我创建了一个testcase echo -en "test\x00" > input/testcase并运行了AFL afl-fuzz -i afl_in -o afl_out -- ./test,但是一天后它仍然没有发现任何崩溃。

我还试图创建一个测试用例,强制它崩溃python3 -c "print('A'*26)" > input/testcase,但它仍然运行,没有找到任何东西。

这被认为是最简单的例子,所以我可以更好地了解AFL,但事实证明它是一种指控。有人能帮忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-19 14:02:07

就像Nick ODell在评论中发布的一样

似乎期望被测试的程序从STDIN中读取,而不是一个参数。Github.com/google/AFL#6-fuzzing二进制文件

该URL后面显示了一个允许AFL从参数中读取数据的实验模块,要使其正常工作,我只需在现有代码中添加2行代码:

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include "argv-fuzz-inl.h" // <-- Argv fuzz module


int main(int argc, char * argv[]){
        AFL_INIT_ARGV(); // <-- needed near the very beginning of main().
        char name[10];

        if ( argc > 1 ){
                strcpy(name, argv[1]);
                printf("HELLO %s\n", name);
        }

        return 0;
}

之后,我又编译了一次,一切都如期而至。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69236894

复制
相关文章

相似问题

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