#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会小心处理:
echo "IMG" >input/1.tx
AFL将自动生成新的测试用例,并发现上述大多数漏洞。多数民众赞成在AFL的美丽:)
如何使用AFL对其进行模糊处理?
1.首先使用以下命令编译该程序:
afl-gcc -g -fsanitize=address imgRead.c -o imgread
2.运行以下命令:
afl-fuzz -i input -o output -m none -- ./imgRead @@
如何使用honggfuzz对其进行模糊处理
1.首先使用以下命令编译该程序:
hfuzz-gcc -g -fsanitize=address imgRead.c -o imgread
2.运行以下命令:
hongfuzz -i input -- ./imgread ___FILE___
如何使用libfuzzer进行模糊测试
您需要修改C代码,可以从这里获取更新的代码:https : //github.com/hardik05/Damn_Vulnerable_C_Program/blob/master/imgRead_libfuzzer.c
1.使用以下命令编译程序:
clang -fsanitize=fuzzer,address,undefined -g imgRead_libfuzzer.c -o imgRead_libfuzzer
** 2。运行以下命令进行模糊测试:
./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程序模糊处理
WinAFL
[使用WinAFL进行模糊处理]用WinAFL进行简单的C程序模糊处理
https://www.youtube.com/watch?v=Va_Wtxf3DMc
[使用WinAFL进行模糊处理]什么是模糊处理功能,如何确保一切正常?
https://www.youtube.com/watch?v=HLORLsNnPzo