网上有很多关于对c程序使用afl进行fuzz的文章,但没有一篇文章讲到如何对一个rust程序使用afl进行模糊测试(本人是做相关课题的),在仔细阅读了官方文档以及翻阅了大量的资料后,成功地跑起了afl。因此决定自己写一篇相关文章
测试环境:ubuntu 20.04虚拟机
最终目标:从零开始对一个rust程序使用afl进行模糊测试,并展示核心面板
详细步骤
1. 安装cargo(Rust 的构建系统和包管理器,可用于编译rust程序)
sudo apt install cargo
2.安装用于测试Rust的AFL(afl.as文件在里面)
cargo install afl
3.编写Rust程序
这里我们使用命令行先创建一个Rust项目,cargo会帮我们自动创建好目录结构,project是项目的包名,注意创建了之后切换到项目的目录根下,整体的项目结构如下图所示:
cargo new project
cd project
在main.rs里面就可以编写我们想要测试的rust文件了,这里的Cargo.tomi是项目数据描述文件(可以理解成是一个配置文件)
4.对源rust程序进行编译插桩
cargo afl build
此命令行相当于 afl-gcc -g -o afl-test afl-test.c
5.创建输入,输出文件夹,在输入文件夹中创建语料种子集
6. 开始模糊测试
cargo afl fuzz -i in -o out target/debug/project(这里写你之前创建的项目名)
这个命令就是正式执行fuzz的命令,等价于我们对c语言程序进行fuzz时输入的命令:afl-fuzz -i in -o out ./afl-test
这里出了一些错, 我们按照他的要求,在命令行输入以下命令
sudo su
输入你虚拟机设置的密码,获得相关权限
echo core >/proc/sys/kernel/core_pattern
切换核之后,我们解决了之前的问题,但又出现了新的问题,说没有子命令afl
这里我们需要再下载一次afl
7.成功运行
输入以下指令:cargo afl fuzz -i in -o out target/debug/(这里写你的项目名)
然后就可以成功运行辣,自动跳出这个页面
喜欢的朋友记得点赞收藏噢~