首页 > 编程语言 >AFL++实战入门与afl-fuzz流程解析(源码流程图)

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

时间:2024-11-06 17:19:36浏览次数:4  
标签:AFL ++ 源码 user input docker Docker

简介

本项目为模糊测试的零基础教学,适合了解 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容器时容器自动删除!!!
解决方案可参考:

解决方案,创建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'){
   
              

标签:AFL,++,源码,user,input,docker,Docker
From: https://blog.csdn.net/qq_65474192/article/details/143574629

相关文章

  • QT creator 中c和c++混编问题
    今天在编译包含.c和.cpp的QT项目,在整合各种代码的时候,碰到一些问题,为了方便后查,初步总结如下:1.新版QT中一般使用g++编译cpp文件和c文件,可以在项目中同时使用c文件和cpp文件。后缀cpp文件g++自动识别为c++代码自动进行c++编译,后缀c文件自动识别为c代码进行c编译。这个时候必须注意......
  • dify专题-后台源码一
            本章开始对Dify最新版本(v0.10.2)源码进行解读。在Dify项目根目录下有如下几个目录:api、web、docker、docker-legacy、sdks等。        其中api是后台项目目录,核心的业务逻辑、模型调用、接口服务代码都在该目录下。web目录是前台项目目录,前台页面代码......
  • 基于数据可视化的房屋租赁财务管家微信小程序设计和实现(源码+论文+部署)
     目录:目录:博主介绍: 完整视频演示:你应该选择我技术栈介绍:需求分析:系统各功能实现一览:1.注册2.登录部分代码参考: 项目功能分析: 项目论文:源码获取:博主介绍: ......
  • 基于数据可视化的智能房租收付管理微信小程序设计和实现(源码+论文+部署)
     目录:目录:博主介绍: 完整视频演示:你应该选择我技术栈介绍:需求分析:系统各功能实现一览:1.注册2.登录部分代码参考: 项目功能分析: 项目论文:源码获取:博主介绍: ......
  • 南沙C++信奥赛陈老师解一本通题 1225:金银岛
    ​ 【题目描述】某天KID利用飞行器飞到了一个金银岛上,上面有许多珍贵的金属,KID虽然更喜欢各种宝石的艺术品,可是也不拒绝这样珍贵的金属。但是他只带着一个口袋,口袋至多只能装重量为w的物品。岛上金属有ss个种类,每种金属重量不同,分别为n1,n2,...,nsn1,n2,...,ns,同时每个种类......
  • ssm052游戏攻略网站的设计与实现+vue(论文+源码)-kaic
      毕业设计(论文)题目:游戏攻略网站设计与实现      摘 要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本游戏攻略网站就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完......
  • ssm051网上医院预约挂号系统+jsp(论文+源码)_kaic
      本科毕业设计论文题目:网上医院预约挂号系统设计与实现系   别:XX系(全称)专    业:软件工程班   级:软件工程15201学生姓名:学生学号:指导教师:导师1       导师22021年5月摘  要如今的信息时代,对信息的共享性,信息......
  • 鸿蒙开发进阶(HarmonyOS )FileUri开发指南(C/C++)
     鸿蒙NEXT开发实战往期必看文章:一分钟了解”纯血版!鸿蒙HarmonyOSNext应用开发!“非常详细的”鸿蒙HarmonyOSNext应用开发学习路线!(从零基础入门到精通)HarmonyOSNEXT应用开发案例实践总结合(持续更新......)HarmonyOSNEXT应用开发性能优化实践总结(持续更新......)场景介......
  • C++工厂模式全解析:从简单工厂到抽象工厂的进阶之路
    在软件设计中,工厂模式(FactoryPattern)是一类创建型设计模式,用于将对象的创建过程和使用过程解耦。这种设计模式在面向对象编程中非常常见,特别是在构建复杂系统时,工厂模式可以使代码更加灵活、模块化、易于扩展。工厂模式的主要类型包括:简单工厂模式(SimpleFactory)工厂方法模......
  • Cmake 实操 -- 使用文件操作命令添加源码文件并移除失效问题记录
    搜索文件使用file(GLOB_RECURSEfileListsearchDir/*.cpp)搜索searchDir目录下所有cpp文件,将路径保存到fileList中。GLOB_RECURSE:启用递归搜索。ps:searchDir不会被展开,如果searchDir中存在C/test/../test1,保存到fileList中的文件路径将仍然带有C/test/../test1,而不是C/test1......