1. 环境安装
1.1 源代码编译
1.2 官方镜像: aflplusplus/aflplusplus
1.3 包管理器安装: apt install afl++
解析:源代码编译在线下载大文件数据包,不够稳定;包管理其安装 afl++ 只是一个基础包,无法进行模糊测试,仍需安装其它依赖包;
推荐官方镜像安装:实时更新,环境完整,但是镜像较大,5.31GB大小。
2. 兼容性测试案例
Test 二进制文件:虚拟机安装环境 Ubuntu14.04
模拟场景:Ubuntu 14.04 下可以运行,但在 Ubuntu 22.04 下无法运行
导致原因通常是由于库依赖、架构变化或系统调用不兼容导致的。
2.1 架构兼容
x86_64 运行ARM 架构编译的二进制文件
2.1.1 测试结果
通过 qemu-user-static 库解决架构兼容问题:
结果
2.1.2 测试程序
编译二进制文件
编译完成后,得到一个 ARM 架构的二进制文件 vuln_arm。
x86_64 架构的主机上直接运行一个 ARM 架构的二进制文件:
./vuln_arm “safe_input”
报错
bash: ./vuln_arm: cannot execute binary file: Exec format error
2.2 32位编译程序
安装 QEMU 的用户模式仿真器(包括 32 位支持)
2.2.1 测试结果
2.2.2 测试程序
1. hello.c
2. 在 Ubuntu 14.04 上安装 32 位编译工具链
3. 编译为 32 位二进制文件
4. 检查二进制文件
5. 执行
6. ubuntu 22.04 下执行
2.3 库依赖
2.3.1 模拟二进制文件
库依赖问题导致二进制在 Ubuntu 14.04 下可以执行,但在 Ubuntu 22.04 下不能执行。
1. 安装旧版 libssl 在 Ubuntu 14.04 上
2. ssl_test.c
3. 编译执行
2.3.2 AFL++ 测试
1. ubuntu 22.04下执行报错
AFL++ 在 QEMU 模式下测试二进制文件的前提是该二进制文件能够正常执行。这是因为 AFL++ 的 QEMU 模式本质上是通过 QEMU 的二进制翻译功能来运行目标程序,并收集覆盖率信息。如果目标二进制文件本身无法正常运行,QEMU 也无法正确执行它,从而导致 AFL++ 无法启动 fork 服务器或收集覆盖率数据。
2. 问题:
共享库缺失问题:libssl.so.1.0.0 在Ubuntu 22.04中不存在,因为OpenSSL的版本已经更新。
3. 解决:
2.3.3 自动化解决
1. 解析二进制文件 ldd
2. 安装依赖
● 缺少共享库:apt 下载;
● 缺少共享库:apt无法下载的情况:集成一个共享库?问题:新库旧库版本冲突?
● 依赖版本冲突:降版本,库的依赖,旧库依赖与现有库冲突问题
● 第三方自定义环境 ?
3. 设置环境
4. 运行二进制文件
后续解决方法:
创建一个 Dockerfile,基于 Ubuntu 14.04 镜像,并安装所需的共享库
debootstrap 创建独立的 Linux 根文件系统, 创建 chroot 环境来运行旧版本的软件, 可创建跨架构的开发环境
中科固源专注于通讯协议安全与模糊测试,提供Wisdom系列工具和Swift系列工具,帮助企业构建全面的网络安全防护体系。了解更多产品与解决方案。加入我们,开启你的高效代码创新之旅!
①扫描二维码或添加微信,获取1V1线上云指导。
②解锁免费高效的开源级开发工具,还有更多专属权益等你来拿。
③关注我们,在评论区留言“我要学习资料”,即可免费获得独家学习资料包,包括详细使用教程、应用案例分析及相关技术文档。
发表评论
您还未登录,请先登录。
登录