【问题标题】:Why is AFL not catching a simple Memory error?为什么 AFL 没有捕捉到简单的内存错误?
【发布时间】:2022-12-15 17:16:55
【问题描述】:

我对 AFL 工具很陌生,阅读了他们的快速入门指南。虽然 Klee 工具可以检测到以下错误,但 AFL 似乎无法捕获它。有人可以告诉为什么会这样吗?


#include<stdio.h>
int get_sign(int x) {
  int foo[3] = {1,2,3};
    if (x == 0)
        return foo[x];

    if (x < 0)
        return foo[x];
    else
        return foo[x];
}

int main() {
    int a;
    printf("Give some input :\n");
    scanf("%d", &a);
  
    return get_sign(a);
}

如果需要任何进一步的信息,请告诉我。

【问题讨论】:

    标签: american-fuzzy-lop


    【解决方案1】:

    两个项目供您检查:

    1.启用ASAN

    并非所有内存访问冲突都会导致崩溃。在您的代码中,即使您输入 -1,它也不会崩溃。 AFL 需要崩溃才能知道 AFL 是否遇到了错误。

    查看这篇文章:https://fuzzing-project.org/tutorial3.html

    2. 检查你的测试工具

    不知道大家在测试get_sign之前有没有修改。也许 get_sign 从未收到 AFL 的输入。您可以按照以下示例更改您的 main 并让 AFL 将其输入作为参数发送。

    int main(int argc, char** argv) {
        int a = atoi(*(argv+1));
        
        return get_sign(a);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-16
      • 2012-01-06
      • 2018-07-02
      • 1970-01-01
      • 2017-06-16
      • 2021-07-25
      • 2017-07-25
      • 2018-12-25
      相关资源
      最近更新 更多