AFL++实战入门与afl-fuzz流程解析(源码流程图)

ops/2024/11/8 15:28:17/

简介

本项目为模糊测试的零基础教学,适合了解 pwn 且会使用 Linux 的 gcc、gdb 的读者。模糊测试旨在通过向程序投喂数据使其崩溃,从而获取崩溃样本以寻找程序漏洞。本文前半部分介绍 AFL++ 的 docker 环境配置,帮助读者解决入门时的环境和网络问题;
后半部分全面解析 afl 的模糊测试流程与源码架构,包括漏洞挖掘实战和原理机制解析。通过本文,读者可以快速入门模糊测试,并深入了解 AFL++ 的工作原理和应用。

文章主要大纲:

一、AFL++的docker环境配置

AFL++ 作为入门模糊测试漏洞挖掘的最佳选择。然而,入门时存在的环境和网络问题往往会使大部分人望而却步,无法顺利转战实战。为解决这一问题,我们直接采用 docker + windows 的环境,并结合 Docker + Windows + VsCode 进行运行,至于代理问题则需要自行解决。

(一)Docker+Windows

在windows上可通过以下步骤使用docker:

  1. Docker Desktop:面向开发人员的 #1 容器化工具 |码头工人 — Docker Desktop: The #1 Containerization Tool for Developers | Docker
  2. vscode远程连接docker容器_attach to vscode-CSDN博客
  3. VsCode轻松使用docker容器-Remote Containers_哔哩哔哩_bilibili

(二)Vscode插件

使用Dev Containers插件,可在商店中获取。

(三)创建afl++的docker容器

所以自己手动在命令行运行创建docker的命令:

docker run --name afl -it -d aflplusplus/aflplusplus /bin/bash

(四)存在问题及解决方案

存在一个巨大的bug如果直接使用vscode创建一个docker那么就会发生stop容器时容器自动删除!!!
解决方案可参考:

  • docker exit 退出后容器消失 - 一个人的孤独自白 - 博客园 (cnblogs.com)
  • 30 如何在VS Code中配置、部署和调试Docker? | yuy4o

解决方案,创建afl++的docker容器可在命令行运行以下命令:

docker run name afl -it -d aflplusplus/aflplusplus /bin/bash

二、AFL++进行漏洞挖掘实战

(一)目标程序的源码

这是一个普通的栈溢出案例,添加了一点点的if判断语句用来模拟正常程序:

//test2.c
#include <stdio.h>
#include <string.h>void vulnerable_function(char *input) {char buffer[4]; // 定义一个长度为4的字符数组// 复制用户输入到buffer中strcpy(buffer, input);printf("输入内容: %s\n", buffer);
}int main() {char user_input[100];printf("请输入一串字符(以回车结束):");fgets(user_input, sizeof(user_input), stdin);// 移除换行符user_input[strcspn(user_input, "\n")] = 0;// 检查前四个字符是否是'a', 'b', 'c', 'd'if (user_input[0] == 'a' ){if( user_input[1] == 'b' ) {if (user_input[2] == 'c'){

http://www.ppmy.cn/ops/131964.html

相关文章

利用微型机器学习进行音频分类以实现 Muara Karang 发电厂的预测性维护

中文论文标题&#xff1a; 利用微型机器学习进行音频分类以实现 Muara Karang 发电厂的预测性维护 英文论文标题&#xff1a; Implementation of Audio Classification Using Tiny Machine Learning for Predictive Maintenance in Muara Karang Power Plant 作者信息&#x…

Git代码托管(三)可视化工具操作(1)

常见的可视化操作工具有 一、官方网页 如码云、gitlab&#xff0c;自带了常见的git操作。 以码云为例&#xff1a; 1、创建分支&#xff1a; 进入分支目录&#xff0c;点击 新建分支 按钮&#xff0c; 在弹出框中输入新分支名称&#xff0c;点击确定即可一键创建分支&…

网络--多路转接

五种IO模型之多路转接模型 IO = 等 + 拷贝 等 : 等待fd上面的新事件就绪 拷贝: 新事件就绪之后,程序进行IO拷贝 多路转接的作用:就是负责IO中的等!等待fd上面的事件就绪,然后通知程序猿,底层的事件就绪,可以进行IO拷贝 1、select 1.1、select的作用和定位 定位:selec…

Spring Boot 与 Vue 共筑卓越租车管理新平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

光伏无人机踏勘,照亮光伏未来!

光伏电站选址地分散在各地&#xff0c;想要精准获取该地的地形特点与屋顶面积等信息&#xff0c;传统的人工踏勘耗时耗力且精度无法保证&#xff0c;难以满足现代光伏项目的规模快发发展需求。光伏无人机踏勘&#xff0c;照亮光伏未来&#xff01; 在光伏无人机智能踏勘设计系统…

贪心算法(Greedy Algorithm)

一、简介 贪心算法是一种在每一步选择中都做出当前最优解的算法&#xff0c;以期通过这些局部最优解&#xff0c;最终得到全局最优解。它的核心思想是贪心选择性质&#xff0c;即每一步都选择能带来最优解的那个选项&#xff0c;而不考虑后续步骤的影响。 步骤&#xff1a; 1、…

华为HarmonyOS打造开放、合规的广告生态 - 原生广告

场景介绍 原生广告是与应用内容融于一体的广告&#xff0c;通过“和谐”的内容呈现广告信息&#xff0c;在不破坏用户体验的前提下&#xff0c;为用户提供有价值的信息&#xff0c;展示形式包含图片和视频&#xff0c;支持您自由定制界面。 接口说明 接口名 描述 loadAd(adP…

精选 Top10 开源调度工具,解锁高效工作负裁自动化

在大数据和现代 IT 环境中&#xff0c;任务调度与工作负载自动化&#xff08;WLA&#xff09;工具是优化资源利用、提升生产效率的核心驱动力。随着企业对数据分析、实时处理和多地域任务调度需求的增加&#xff0c;这些工具成为关键技术。 本文将介绍当前技术发展背景下的Top …