【AFL(九)】详细解释 AFL类fuzzer 对目标进行 Fuzz (LAVA中)
上一篇解决了如何利用AFL对LAVA-M进行fuzz的问题,接下来的中篇,主要为最后的写shell脚本做提前尝试。
本篇主要解决的问题是:实现变种AFL对LAVA的fuzz,进一步实现两个AFL双开,并写一个脚本自动打开进行fuzz展示的脚本。
一、mopt-afl对lava-m进行fuzz
为什么选中mopt-afl,因为是一篇开源的顶会论文,而且mopt-afl对afl的改进,只对afl.c文件进行了改进,所以fuzz的操作跟afl差不多,处理方便。
对lava的介绍就不多说了,详情可以看(上篇),接下来进入正题:
1. 从git下载源码,放到跟afl同级的目录下(这里的目的是为之后写脚本目录好分配做准备)
git clone https://github.com/puppet-meteor/MOpt-AFL.git
2. 进入MOpt-AFLV1.0文件夹
3. 跟afl一样进行编译安装
make make install
4. 这个时候,mopt-afl已经代替了user环境文件夹下的那个afl,所以这时候执行afl-fuzz使用的就是mopt-afl的fuzzer,但是我们依旧可以通过原来afl2.52b的文件夹下的afl-fuzz来运行,知道这一点之后就容易多了,之后我们不用在编译时在环境里生成的link,而是用afl的真正位置路径。
当然了这时候我们可以先用afl-fuzz命令测试一下编译是否成功:
afl-fuzz -i inputs/ -o outputs coreutils-8.24-lava-safe/lava-install/bin/base64 -d @@
只要跟正常的afl显示相同即可,这里有一点变化是开头的第一行,具体mopt-afl和afl的区别看最后的截图。
二、编写两个afl同时进行的脚本
总体的设计思路是这样的,首先编写总的shell,目的是能够统一管理fuzzer,因为之后可能会有新的fuzzer加入,比如angora、vuzz之类的,现在就要计划好结构;然后可以为每一个fuzzer单独编写shell,因为我是想用gnome-terminal实现为每一个fuzzer分配一个单独的窗口,因此最好是单独有shell,这样总的shell代码可读性也好一点。
1.总的shell:
#afl gnome-terminal --geometry=80x40+70+30 -x bash -c "sh ./afl.sh;exec bash;" #mopt-afl gnome-terminal --geometry=80x40+870+30 -x bash -c "sh ./mopt-afl.sh;exec bash;"
2.afl的shell:
./afl-2.52b/afl-fuzz -i ../LAVA/lava_corpus/LAVA-M/base64/fuzzer_input/ -o ../LAVA/lava_corpus/LAVA-M/base64/outputs ../LAVA/lava_corpus/LAVA-M/base64/coreutils-8.24-lava-safe/lava-install/bin/base64 -d @@
3.mopt-afl的shell:
./MOpt-AFL/MOpt-AFL/afl-fuzz -i ../LAVA/lava_corpus/LAVA-M/base64/fuzzer_input/ -o ../LAVA/lava_corpus/LAVA-M/base64/outputs_mopt ../LAVA/lava_corpus/LAVA-M/base64/coreutils-8.24-lava-safe/lava-install/bin/base64 -d @@
4.然后运行总的脚本即可:
bash afl_s_exc.sh
5. 我的目录结构是这样的,可以按照自己的需求自行对以上代码进行修改:
三、可能的报错
1.查看报错,发现有个问题,需要 core_pattern
2.切换root
3.按提示输入指令切换 echo core >/proc/sys/kernel/core_pattern
四、运行结果
五、参考
1. mopt-afl的git地址:https://github.com/puppet-meteor/MOpt-AFL
2. gnome-terminal:gnome-terminal用法解析_运维_Alone-CSDN博客
==========================================================
如果本文对您有帮助,欢迎打赏~~~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY