AFL++实战(一)-黑盒测试FFmpeg

AFL++下载及安装

git clone https://github.com/AFLplusplus/AFLplusplus
cd AFLplusplus
apt install build-essential libtool-bin python3-dev automake flex bison libglib2.0-dev libpixman-1-dev clang python3-setuptools llvm
make distrib
make install

如果输入 afl-fuzz -Q -m none -i in -o out test @@ ,即可对无源码的 test 二进制文件进行 fuzz 测试。

FFmpeg准备

FFmpeg是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec ─这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。

下载并安装

ffmpeg官网地址

wget https://ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2
tar -jxvf ffmpeg-4.0.2.tar.bz2
cd ffmpeg-4.0.2/
./configure
make
make install
构建语料库

ffmpeg黑盒测试主要就是用的官网上的语料库,本次实验主要是用的test数据集下的一些avi测试集。构建语料库代码如下:

# 进入到你的ffmeg所在位置
mkdir in     # 当前文件夹下创建in文件下
cd in
# 通过wget指令可以下载测试语料库,这里只给出一个测试集
wget http://samples.ffmpeg.org/tests/DivX-test/Xmen-OpenDivX-200-slow.avi
黑盒测试FFmpeg

所谓黑盒测试,通俗地讲就是对没有源代码的程序进行测试,这时就要用到AFL的QEMU模式了。启用QEMU模式,要先编译。

# 进入到AFLplusplus所在位置
cd qemu_mode
./build_qemu_support.sh

现在准备工作已经全部做好了,只需添加 -Q 选项即可使用QEMU模式进行Fuzzing。

afl-fuzz -Q -m none -i in -o out ./ffmpeg -i @@
结果展示

在这里插入图片描述

根据 fuzz 时输入的命令,我们的结果是输出在 out 目录下。

├── cmdline
├── crashes
├── fuzz_bitmap
├── fuzzer_stats
├── hangs
├── plot_data
└── queue
    ├── id:000000,time:0,orig:Xmen-OpenDivX-650-fast.avi
    ├── id:000001,src:000000,time:28078,op:flip1,pos:5,+cov
    ├── id:000002,src:000000,time:28192,op:flip1,pos:5
    ├── id:000003,src:000000,time:28302,op:flip1,pos:5
    ├── id:000004,src:000000,time:28422,op:flip1,pos:6
    ├── id:000005,src:000000,time:28590,op:flip1,pos:7,+cov
    ├── id:000006,src:000000,time:28690,op:flip1,pos:7
    ├── id:000007,src:000000,time:28786,op:flip1,pos:7
    ├── id:000008,src:000000,time:37873,op:flip1,pos:12,+cov
    ├── id:000009,src:000000,time:38178,op:flip1,pos:12
    ├── id:000010,src:000000,time:38603,op:flip1,pos:13
    ├── id:000011,src:000000,time:38876,op:flip1,pos:13,+cov
    ├── id:000012,src:000000,time:39579,op:flip1,pos:15,+cov
    ├── id:000013,src:000000,time:40218,op:flip1,pos:18
    ├── id:000014,src:000000,time:40425,op:flip1,pos:20
    ├── id:000015,src:000000,time:40660,op:flip1,pos:22,+cov
    ├── id:000016,src:000000,time:40877,op:flip1,pos:24,+cov
    ├── id:000017,src:000000,time:40963,op:flip1,pos:24
    ├── id:000018,src:000000,time:41171,op:flip1,pos:25,+cov
    ├── id:000019,src:000000,time:41347,op:flip1,pos:27
    ├── id:000020,src:000000,time:41483,op:flip1,pos:28,+cov

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值