注意:文件名已从imgRead.c更改为dvcp.c,如果你正在观看视频,你会看到imgRead.c,但在GitHub仓库中你会看到dvcp.c,请使用正确的文件名。
我的YouTube频道: https://www.youtube.com/user/MrHardik05/featured?view_as=subscriber
它是什么?
这是一个我编写的简单C程序,用于解释常见类型的漏洞,例如:
这个C程序包含了上述所有漏洞的易受攻击代码,你可以使用任何模糊测试器对其进行模糊测试,例如AFL、libafl、libfuzzer、hongfuzz、winafl、jackalope或任何其他你想要的模糊测试器。
如何编译
只需在命令行提示符下输入"make"即可。其中包含了Makefile。
如何为AFL生成输入?
只需创建一个示例输入文件,如下所示,其余的事情AFL会处理:
echo "IMG" >input/1.txt
AFL将自动生成新的测试用例,并发现上述大多数漏洞。这就是AFL的魅力所在 :)
如何使用AFL对其进行模糊测试?
1. 首先使用以下命令编译该程序:
afl-gcc -g -fsanitize=address dvcp.c -o dvcp
2. 运行以下命令:
afl-fuzz -i input -o output -m none -- ./dvcp @@
如何使用honggfuzz进行模糊测试
1. 首先使用以下命令编译该程序:
hfuzz-gcc -g -fsanitize=address dvcp.c -o dvcp
2. 运行以下命令:
hongfuzz -i input -- ./dvcp ___FILE___
如何使用libfuzzer进行模糊测试
你需要修改C代码,你可以从这里获取更新后的代码:https://github.com/hardik05/Damn_Vulnerable_C_Program/blob/master/dvcp_libfuzzer.c
1. 使用以下命令编译程序:
clang -fsanitize=fuzzer,address,undefined -g dvcp_libfuzzer.c -o dvcp_libfuzzer
2. 运行以下命令进行模糊测试:
./dvcp_libfuzzer
你可以在这里查看视频教程:
完整模糊测试播放列表:
https://www.youtube.com/watch?v=r7ucv2kN4j4&list=PLHGgqcJIME5kYhOSdJjvtVS4b4_OXDqM-
以下是各个视频:
Linux
LibAFL
[使用libAFL进行模糊测试]如何在系统上安装libAFL以及它有哪些不同的组件? -> https://www.youtube.com/watch?v=ztGfxbvcrms
[使用libAFL进行模糊测试]libAFL ForkServer简介,运行libAFL forkserver模糊测试器。 -> https://www.youtube.com/watch?v=Ed1anYoGTyA
[使用libAFL进行模糊测试]使用libAFL forkserver模糊测试器对Damn Vulnerable C Program进行模糊测试 -> https://www.youtube.com/watch?v=ad_4zroiS_g
[使用libAFL进行模糊测试] 在libAFL forkserver模糊测试器中使用共享内存模式 -> https://www.youtube.com/watch?v=GXD_qkISyfY
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进行模糊测试] 使用crashwalk对崩溃进行分类,并使用GDB查找根本原因 -> https://www.youtube.com/watch?v=5R2gPkCXZkM
[使用AFL进行模糊测试] 在Qemu模式下使用AFL模糊测试没有源代码的二进制文件。-> https://www.youtube.com/watch?v=np3sLLFQs6I
Honggfuzz
[使用honggfuzz进行模糊测试] 使用HongFuzz对一个简单的C程序进行模糊测试 -> https://www.youtube.com/watch?v=6OBXJtEe-d8
[使用honggfuzz进行模糊测试] Hongfuzz、checksec(pwntools)、ASAN -> https://www.youtube.com/watch?v=Lr8pLQRTHac
Libfuzzer
[使用libfuzzer进行模糊测试] 如何使用LibFuzzer对一个简单的C程序进行模糊测试 -> https://www.youtube.com/watch?v=hFva8kJQwnc&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp
[使用libfuzzer、AFL进行模糊测试] 如何使用AFL对libfuzzer harness程序进行模糊测试 -> https://www.youtube.com/watch?v=HfEqm3TrfwM&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp&index=2
如何复现OpenSSL漏洞CVE-2022-3602和CVE-2022-3786并使用libfuzzer -> https://www.youtube.com/watch?v=vhTuXph1dtY
Radamsa
[使用Radamsa进行模糊测试] 使用Radamsa对一个简单的C程序进行模糊测试 -> https://youtu.be/1FRsXVNpynQ
Windows
WinAFL
[使用WinAFL进行模糊测试] 使用WinAFL对一个简单的C程序进行模糊测试 -> https://www.youtube.com/watch?v=Va_Wtxf3DMc
[使用WinAFL进行模糊测试] 什么是模糊测试函数,如何确保一切正常工作? -> https://www.youtube.com/watch?v=HLORLsNnPzo
我需要更多Windows harness来配合winafl进行模糊测试
当然,请查看这里 -> https://github.com/hardik05/winafl-harness
我想尝试一些不同的东西,也许是不同于winafl默认的变异器..
是的,你可以试试这个 -> https://github.com/hardik05/winafl-powermopt
随着我创建更多内容,会陆续上传。
来自Google的OSS-Fuzz
OSS-Fuzz的工作原理:开源项目模糊测试指南 -> https://www.youtube.com/watch?v=OBxCDsJ-0aM
你为什么创建这个?
对于新手甚至经验丰富的人来说,理解不同类型的漏洞都需要花费大量时间。我自己也遇到过这个问题,因此决定分享我所学到的东西。
如果你从中有所收获,请给我发一封感谢信。这就是我需要的全部。另外,如果你想改进或修复某些内容,欢迎提交PR!
作者?
Twitter: https://twitter.com/hardik05
邮箱: 在Twitter上私信我 :)
网站: http://hardik05.wordpress.com
反馈?
欢迎随时提出建议和意见。如果你发现任何问题、有修复方案或新功能,请发送拉取请求。