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,如此一来,系统在产生核心转储文件时就不会借助外部工具,从而避免了延迟问题。
不过,这种修改仅在当前会话中有效,系统重启之后配置会恢复原状。
再执行:
在这里插入图片描述
就产生下面的运行结果图:
在这里插入图片描述
还有
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/72889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【STM32】ADC功能-单通道多通道(学习笔记)

本章结合上一节内容复习更好理解【江协科技STM32】ADC数模转换器-学习笔记-CSDN博客 一、ADC单通道 接线图 ADC初始化 ①RCC开启时钟&#xff0c;包括ADC和GPIO的时钟&#xff0c;另外ADCCLK的分频器也要配置 ②配置GPIO,&#xff0c;把需要用的GPIO配置成模拟输入模式&am…

基于YOLO11深度学习的运动品牌LOGO检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

当前主流的大模型训练与推理框架的全面汇总

以下是当前主流的大模型训练与推理框架的全面汇总 以下是更新后包含 SGLang 的大模型训练与推理框架列表&#xff0c;并对分类和示例进行了优化&#xff1a; 一、通用深度学习推理框架 TensorRT-LLM 特点&#xff1a;NVIDIA推出的针对Transformer类模型的优化框架&#xff0c;支…

Linux学习(八)(服务管理(检查服务状态,开始/停止服务,检查服务日志,创建新服务))

服务管理 Linux 中的服务管理是指控制 Linux 在启动和关闭计算机的过程中启动和停止的服务&#xff08;或“守护程序”&#xff09;的系统。这些服务执行各种功能&#xff0c;并提供未附加到用户界面的进程。 Linux 系统&#xff0c;尤其是系统管理员&#xff0c;通常需要管理…

ElasticSearch 分词器介绍及测试:Standard(标准分词器)、English(英文分词器)、Chinese(中文分词器)、IK(IK 分词器)

ElasticSearch 分词器介绍及测试&#xff1a;Standard&#xff08;标准分词器&#xff09;、English&#xff08;英文分词器&#xff09;、Chinese&#xff08;中文分词器&#xff09;、IK&#xff08;IK 分词器&#xff09; ElasticSearch 分词器介绍及测试1. Standard Analyz…

【计算机网络】确认家庭网络是千兆/百兆带宽并排查问题

要确认你的带宽是千兆&#xff08;1000Mbps&#xff09;还是百兆&#xff08;100Mbps&#xff09;&#xff0c;可以通过以下方法逐步排查&#xff1a; 一、检查物理设备 1. 查看路由器和光猫的网口 千兆网口&#xff1a;路由器或光猫的网口旁通常会标注 “10/100/1000M” 或 …

[数据分享第七弹]全球洪水相关数据集

洪水是一种常见的自然灾害&#xff0c;在全球范围内造成了极为严重的威胁。近年来&#xff0c;针对洪水事件的检测分析&#xff0c;以及对于洪水灾害和灾后恢复能力的研究日渐增多&#xff0c;也产生了众多洪水数据集。今天&#xff0c;我们一起来收集整理一下相关数据集。&…

深入探讨AI-Ops架构 第一讲 - 运维的进化历程以及未来发展趋势

首先&#xff0c;让我们一起回顾运维的进化之路&#xff0c;然后再深入探讨AI-Ops架构的细节。 运维的进化历程 1. AI 大范围普及前的运维状态 (传统运维) 在AI技术尚未广泛渗透到运维领域之前&#xff0c;我们称之为传统运维&#xff0c;其主要特点是&#xff1a; 人工驱动…

Hive-数据倾斜优化

数据倾斜的原因 1&#xff09;key分布不均匀&#xff0c;本质上就是业务数据有可能会存在倾斜 2&#xff09;某些SQL语句本身就有数据倾斜 关键词 情形 后果 Join A、其中一个表较小&#xff0c;但是key集中; B、两张表都是大表&#xff0c;key不均 分发到…

番外篇 - Docker的使用

一、Docker的介绍 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。 容器是完…

深度学习与普通神经网络有何区别?

深度学习与普通神经网络的主要区别体现在以下几个方面&#xff1a; 一、结构复杂度 普通神经网络&#xff1a;通常指浅层结构&#xff0c;层数较少&#xff0c;一般为2-3层&#xff0c;包括输入层、一个或多个隐藏层、输出层。深度学习&#xff1a;强调通过5层以上的深度架构…

RuleOS:区块链开发的“新引擎”,点燃Web3创新之火

RuleOS&#xff1a;区块链开发的“新引擎”&#xff0c;点燃Web3创新之火 在区块链技术的浪潮中&#xff0c;RuleOS宛如一台强劲的“新引擎”&#xff0c;为个人和企业开发去中心化应用&#xff08;DApp&#xff09;注入了前所未有的动力。它以独特的设计理念和强大的功能特性&…

c# MimeEntity修改邮件附件名称

在C#中&#xff0c;当你使用如MimeKit库来处理电子邮件时&#xff0c;你可以通过修改MimeEntity的ContentDisposition属性来更改邮件附件的名称。以下是如何做到这一点的步骤&#xff1a; 1. 添加MimeKit引用 首先&#xff0c;确保你的项目中已经添加了MimeKit库。如果你使用…

Windows编译环境搭建(MSYS2\MinGW\cmake)

我的音视频/流媒体开源项目(github) 一、基础环境搭建 1.1 MSYS2\MinGW 参考&#xff1a;1. 基于MSYS2的Mingw-w64 GCC搭建Windows下C开发环境_msys2使用mingw64编译 在Widndows系统上&#xff0c;使用gcc工具链&#xff08;g&#xff09;进行C程序开发&#xff1f;可以的&a…

TikTok美国战略升级:聚焦美食旅行,本地化服务如何重塑市场格局

平台深耕本土内容生态&#xff0c;餐饮旅游创作者迎流量红利&#xff0c;算法推荐机制激发地域经济新活力 过去一年&#xff0c;TikTok在美国市场的动作频频引发行业关注。从早期以娱乐、舞蹈为主的全球化内容&#xff0c;到如今将资源向美食、旅行两大垂类倾斜&#xff0c;这…

Unity Dots环境配置

文章目录 前言环境配置1.新建Unity 工程2.安装Entities包2.安装EntitiesGraphics包3.安装URP渲染管线 Dots窗口 前言 DOTS&#xff08;Data-Oriented Technology Stack&#xff09;是Unity推出的一种用于开发高性能游戏和应用的数据导向技术栈&#xff0c;包含三大核心组件&am…

manus对比ChatGPT-Deep reaserch进行研究类学术相关数据分析!谁更胜一筹?

没有账号&#xff0c;只能挑选一个案例 一夜之间被这个用全英文介绍全华班出品的新爆款国产AI产品的小胖刷频。白天还没有切换语言的选项&#xff0c;晚上就加上了。简单看了看团队够成&#xff0c;使用很长实践的Monica创始人也在其中。逐渐可以理解&#xff0c;重心放在海外产…

Python项目-基于Django的在线教育平台开发

1. 项目概述 在线教育平台已成为现代教育的重要组成部分&#xff0c;特别是在后疫情时代&#xff0c;远程学习的需求显著增加。本文将详细介绍如何使用Python的Django框架开发一个功能完善的在线教育平台&#xff0c;包括系统设计、核心功能实现以及部署上线等关键环节。 本项…

【自学笔记】Numpy基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Numpy基础知识点总览目录1. 简介Numpy是什么为什么使用Numpy 2. 数组对象&#xff08;ndarray&#xff09;创建数组数组的属性数组的形状操作 3. 数组的基本操作数组…

Kubernetes中的 iptables 规则介绍

#作者&#xff1a;邓伟 文章目录 一、Kubernetes 网络模型概述二、iptables 基础知识三、Kubernetes 中的 iptables 应用四、查看和调试 iptables 规则五、总结 在 Kubernetes 集群中&#xff0c;iptables 是一个核心组件&#xff0c; 用于实现服务发现和网络策略。iptables 通…