当前位置: 首页 > news >正文

AFL++安装

学习fuzzing也几天了,今天记录AFL++的安装及使用

一、实验环境

虚拟机:ubuntu20.04
版本号
当然也可以uname -a去看自己的版本号

二、AFL++安装

1.先更新一下工具

sudo apt update

2.安装AFL++必要的一些依赖,例如编译工具(如 build-essential)、Python 开发环境、自动化构建工具(如 automake)。

sudo apt install -y build-essential python3-dev automake cmake git flex bison libglib2.0-dev libpixman-1-dev python3-setuptools cargo libgtk-3-dev

在过程中我开始遇到被2954进程占用,如下图
在这里插入图片描述

这个进程是管包更新的。我本来准备kill这个进程,但过了一会他便好了
在这里插入图片描述
3.克隆AFL++仓库

git clone https://github.com/AFLplusplus/AFLplusplus.git

克隆好后去下方的文件夹

cd AFLplusplus

在这里插入图片描述
4.编译安装AFL++
我开始make all指令后,出现下面问题
在这里插入图片描述
遇到的错误是因为缺少 GCC 插件开发头文件,于是我开始安装。先下面看gcc的版本号

gcc -v | head -n1

在这里插入图片描述
然后安装gcc插件包

sudo apt install gcc-9-plugin-dev 
# 若版本是 12.x,改为:
# sudo apt install gcc-12-plugin-dev

在这里插入图片描述
安装完事后,再重新编译AFL++

make clean  # 清理旧编译文件(可选)
make  # 重新执行编译

在这里插入图片描述
同时,我也将其安装到系统,使其可以全局使用

sudo make install

在这里插入图片描述
5.检测AFL++是否安装成功

afl-fuzz --help

在这里插入图片描述
到这AFL++安就安好了

三、安装VScode

这不是重点,我们快速带过
安装命令如下

sudo apt update
sudo apt install software-properties-common apt-transport-https wget
# 添加微软签名密钥
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/microsoft.gpg
# 添加 VS Code 软件源
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
# 安装 VS Code
sudo apt install code

启动命令如下:

code

在这里插入图片描述

四、使用AFL++

4.1 实验准备

我们先编写一个test.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]) {
    char buffer[100];
    if (argc > 1) {
        strcpy(buffer, argv[1]);
        printf("You entered: %s\n", buffer);
    }
    return 0;
}

这里很明显可以看出缓冲器漏洞
回顾一下平常我们怎么启用

gcc test.c -o test
#其中,test.c是源文件名,-o test指定生成的可执行文件名为test
./test xxx
#./test就可以启动test.exe,后面xxx可以输进去东西

在这里插入图片描述

4.2 工具测试

**1.编译目标程序。**使用 AFL++ 提供的编译器包装器 afl-clang-fast 或 afl-gcc 来编译目标程序,以便在运行时收集模糊测试所需的信息。这里以 afl-clang-fast 为例:

afl-clang-fast -g -o test test.c

在这里插入图片描述
遇到一个问题,安一下afl-clang-fast

sudo apt install afl++-clang

在这里插入图片描述
再执行就OK了
在这里插入图片描述
2.创建基础文件
模糊测试需要一些初始的输入数据作为测试的起点。创建一个包含简单输入的文件

mkdir in
echo "Hello" > in/test_input
mkdir out

在这里插入图片描述
3.启动模糊测试
使用 afl-fuzz 命令启动模糊测试,指定输入目录、输出目录和要测试的目标程序:

afl-fuzz -i in -o out ./test @@

-i in:指定包含初始输入文件的目录。
-o out:指定用于存储模糊测试结果的输出目录。
./test @@:指定要测试的目标程序,@@ 是 AFL++ 的占位符,表示在运行目标程序时将自动替换为生成的输入文件。
执行遇到一个小问题
在这里插入图片描述
从你给出的错误信息可知,系统当前的 core_pattern 配置会致使在捕获程序崩溃时出现延迟,从而影响 AFL++ 的正常运行。AFL++ 建议你修改 /proc/sys/kernel/core_pattern 的配置
我们在这个框临时解决一下

echo core | sudo tee /proc/sys/kernel/core_pattern

该命令的作用是把 /proc/sys/kernel/core_pattern 的值设定为 core,如此一来,系统在产生核心转储文件时就不会借助外部工具,从而避免了延迟问题。
不过,这种修改仅在当前会话中有效,系统重启之后配置会恢复原状。
再执行:
在这里插入图片描述
就产生下面的运行结果图:
在这里插入图片描述
还有
在这里插入图片描述
啊,为什么没crashes。求教大佬

相关文章:

  • fastapi+mysql实现增删改查
  • 2023年区块链职业技能大赛——区块链应用技术(一)模块一
  • MAC-禁止百度网盘自动升级更新
  • Windows控制台函数:控制台输出函数WriteConsoleA()
  • Python性能优化面试题及参考答案
  • Android15使用FFmpeg解码并播放MP4视频完整示例
  • 计算机网络——交换机
  • WPF有哪些使用率高的框架
  • 华纳云:香港服务器出现带宽堵塞一般是什么原因?
  • SpringBoot项目配置文件
  • 利用pdf.js+百度翻译实现PDF翻译,创建中文PDF
  • 深入理解 DOM 元素
  • 从0开始的操作系统手搓教程28:实现Syscall架构体系
  • 【神经网络】0.深度学习基础:解锁深度学习,重塑未来的智能新引擎
  • 【后端开发面试题】每日 3 题(八)
  • Linux——工具(3)git——版本控制器
  • 【Linux】缓冲区
  • STM32F407 NVIC和外部中断
  • 从数据到决策:Ubuntu工控机的工业应用实践
  • assert断言的运用与实践
  • 19国入境团抵沪并游玩,老外震惊:“怎么能有这么多人?”
  • 墨海军训练舰在纽约撞桥,墨总统:对遇难者表示悲痛,将跟进调查
  • 从《缶翁的世界》看吴昌硕等湖州籍书画家对海派的影响
  • 上博东馆常设陈列入选全国博物馆“十大精品”
  • 外交部驻港公署正告美政客:威胁恫吓撼动不了中方维护国家安全的决心
  • 南京艺术学院博导、雕塑家尹悟铭病逝,年仅45岁