首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行AFL-模糊缓冲区溢出

运行AFL-模糊缓冲区溢出
EN

Stack Overflow用户
提问于 2019-12-31 21:10:13
回答 1查看 813关注 0票数 0

我正在努力学习AFL-fuzzer,我有一些问题:

  1. 我看到一个视频显示,例如,如果代码中有两个输入,那么在测试用例中,每一行都是针对每个输入的。对吗?因为我想将完整的消息(例如HTTP请求)放入一个变量中,那么我该如何做呢?
  2. 我不知道什么时候该放@。

例如,我试图模糊这段代码:

代码语言:javascript
复制
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文件夹中,我创建了一个包含以下内容的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,它运行良好,但是它找不到任何新路径,也找不到崩溃。

同时,我也在努力理解这方面的概念。如果我想在特定的位置注入代码,我该如何做呢?

EN

回答 1

Stack Overflow用户

发布于 2020-01-21 15:42:58

  1. 您正在尝试从命令行参数中获取数据,但是AFL不适用于argv除非您的程序读取./prog file.txt之类的文件。相反,请使用类似于 #定义INPUTSIZE 100 char inputINPUTSIZE = {0};读(STDIN_FILENO,输入,INPUTSIZE) 如果您仍然对从argv[]获取数据感兴趣,可以使用AFL存储库afl argv实验中的实验方法。
  2. @@是在程序通过命令行接受文件时使用的--这意味着fuzzer将接收该文件,对其进行变异,并将其替换为程序中的@@。

附注:

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


#define INPUTSIZE 100
void Check_buffer(char* data)
{
    char buffer[5];
    strcpy(buffer, data);
}

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

char input[INPUTSIZE] = {0};
read (STDIN_FILENO, input, INPUTSIZE);

    Check_buffer(input);
    return 0;
}

AFL结果图像

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

https://stackoverflow.com/questions/59548462

复制
相关文章

相似问题

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