【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博客

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未佩妥剑,已入江湖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值