前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用AFL进行模糊测试。

用AFL进行模糊测试。

作者头像
Khan安全团队
发布2021-05-08 15:41:39
1.3K0
发布2021-05-08 15:41:39
举报
文章被收录于专栏:Khan安全团队
代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct Image
{
char header[4];
int width;
int height;
char data[10];
};

void stack_operation(){
    char buff[0x1000];
    while(1)
      stack_operation(); //recusively call function and allocate stack memory
  }

int ProcessImage(char* filename){

  FILE *fp;
  char ch;
  struct Image img;

  fp = fopen(filename,"r");            //Statement   1

  if(fp == NULL)
  {
    printf("\nCan't open file or file doesn't exist.\r\n");
    exit(0);
  }


  while(fread(&img,sizeof(img),1,fp)>0)
  {
    //if(strcmp(img.header,"IMG")==0)
    //{
    printf("\n\tHeader\twidth\theight\tdata\t\r\n");

    printf("\n\t%s\t%d\t%d\t%s\r\n",img.header,img.width,img.height,img.data);


    //integer overflow 0x7FFFFFFF+1=0
    //0x7FFFFFFF+2 = 1
    //will cause very large/small memory allocation.
    int size1 = img.width + img.height;
    char *buff1;
    if(size1/2==0){
      do{
        buff1=(char*)malloc(size1);
      }while(buff1);
    }
    else{
      stack_operation();
    }

  }
  return 0;
  }

  int main(int argc,char **argv)
{
    ProcessImage(argv[1]);
    return 0;
  }

此C程序包含上述所有漏洞的易受攻击的代码,然后用户可以使用AFL或hongfuzz或其他所需的方法对其进行模糊处理。

**如何编译**

只需在命令提示符下键入“ make”即可。Makefile包含在其中。

如何为AFL生成输入?

只需创建一个示例输入文件,如下所示,其余的AFL会小心处理:

代码语言:javascript
复制
echo "IMG" >input/1.tx

AFL将自动生成新的测试用例,并发现上述大多数漏洞。多数民众赞成在AFL的美丽:)

如何使用AFL对其进行模糊处理?

1.首先使用以下命令编译该程序:

代码语言:javascript
复制
afl-gcc -g -fsanitize=address imgRead.c -o imgread

2.运行以下命令:

代码语言:javascript
复制
afl-fuzz -i input -o output -m none -- ./imgRead @@

如何使用honggfuzz对其进行模糊处理

1.首先使用以下命令编译该程序:

代码语言:javascript
复制
hfuzz-gcc -g -fsanitize=address imgRead.c -o imgread

2.运行以下命令:

代码语言:javascript
复制
hongfuzz -i input -- ./imgread ___FILE___

如何使用libfuzzer进行模糊测试

您需要修改C代码,可以从这里获取更新的代码:https : //github.com/hardik05/Damn_Vulnerable_C_Program/blob/master/imgRead_libfuzzer.c

1.使用以下命令编译程序:

代码语言:javascript
复制
clang -fsanitize=fuzzer,address,undefined -g imgRead_libfuzzer.c -o imgRead_libfuzzer

** 2。运行以下命令进行模糊测试:

代码语言:javascript
复制
./imgRead_libfuzzer

您可以在此处查看视频教程:

完整的模糊测试播放列表:

https://www.youtube.com/watch?v=r7ucv2kN4j4&list=PLHGgqcJIME5kYhOSdJjvtVS4b4_OXDqM-

以下单个视频:

Linux

AFL ++

[使用AFLplusplus进行模糊处理]安装AFLPlusplus并使用简单的C程序进行模糊处理

https://www.youtube.com/watch?v=9wRVo0kYSlc

[使用AFLplusplus进行模糊处理]如何在Linux上以持久模式对没有源代码的二进制文件进行模糊处理

https://www.youtube.com/watch?v=LGPJdEO02p4

AFL

[使用AFL进行模糊处理]如何在Ubuntu上安装AFL

https://www.youtube.com/watch?v=r7ucv2kN4j4

[使用AFL模糊处理]使用AFL模糊简单的C程序

https://www.youtube.com/watch?v=NiGC1jxFx78&t=66s

[使用AFL进行模糊处理]使用AFL查找不同类型的漏洞

https://www.youtube.com/watch?v=m1RkShHzx_8&t=151s

[使用AFL进行模糊处理]使用崩溃行走对崩溃进行分类,并使用GDB查找根本原因

https://www.youtube.com/watch?v=5R2gPkCXZkM

[使用AFL进行模糊处理]在Qemu模式下,使用AFL对没有源代码的二进制文件进行模糊处理。

https://www.youtube.com/watch?v=np3sLLFQs6I

Honggfuzz

[使用honggfuzz进行模糊处理]使用HongFuzz

https://www.youtube.com/watch?v=6OBXJtEe-d8来对简单的C程序进行模糊处理

[使用honggfuzz进行模糊处理] Hongfuzz,checksec(pwntools),ASAN

https://www.youtube.com/watch?v=Lr8pLQRTHac

Windows

Libfuzzer

[使用libfuzzer模糊测试]如何使用LibFuzzer模糊简单的C程序

https://www.youtube.com/watch?v=hFva8kJQwnc&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp

[使用libfuzzer,AFL进行模糊处理]如何使用AFL来模糊libfuzzer利用程序

https://www.youtube.com/watch?v=HfEqm3TrfwM&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp&index=2

Radamsa

[使用Radamsa进行模糊处理]使用Radamsa进行简单的C程序模糊处理

https://youtu.be/1FRsXVNpynQ

WinAFL

[使用WinAFL进行模糊处理]用WinAFL进行简单的C程序模糊处理

https://www.youtube.com/watch?v=Va_Wtxf3DMc

[使用WinAFL进行模糊处理]什么是模糊处理功能,如何确保一切正常?

https://www.youtube.com/watch?v=HLORLsNnPzo

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Khan安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档