一、Fuzzing速成之AFL实战

news2024/11/17 5:55:58

文章目录

  • 一、Fuzzing基本知识
    • 1、什么是Fuzzing?
    • 2、Fuzzing运行流程
  • 二、Fuzzing实战
    • 1、下载AFL压缩包
    • 2、安装AFL
    • 3、Fuzzing


一、Fuzzing基本知识

1、什么是Fuzzing?

  维基百科将模糊测试定义为:
    模糊测试 (fuzz testing, fuzzing)是一种软件测试技术。其核心思想是将自动或半自动生成的随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏。模糊测试常常用于检测软件或计算机系统的安全漏洞。

也就是说,Fuzzing是用随机数据来测试程序。

2、Fuzzing运行流程

下面主要从AFL的运行流程来更好理解Fuzzing的执行流程:
  1).对源代码进行编译,并进行插桩,以记录代码覆盖率;
  2).选择一些输入文件,作为初始输入,也就是初始种子;
  3).一般是以队列方式,选择种子池中的种子;
  4).按照一定的变异策略,对选中的种子进行变异,生成多个新的种子;
  5).用变异生成的种子对编译好的程序进行测试;
    - 如果该种子能够增加代码覆盖率,则保存到种子池中,进行下一次变异;
    - 如果该种子导致程序崩溃,则保存起来,方便之后查看为什么导致程序崩溃。
  6).在测试若干轮之后,可能会保存有造成程序崩溃的种子,现在就是去分析它为什么导致崩溃的时候了!

下图是AFL的流程图:
Fuzzing流程图

二、Fuzzing实战

  该部分主要使用AFL进行Fuzzing练习😍😍😍

1、下载AFL压缩包

  AFL官方网址AFL
在这里插入图片描述

2、安装AFL

  解压压缩包后,进入到AFL的解压目录

  • make
  • sudo make install

  注意解压命令:
  tar -zxvf afl-2.52b.tgz


make后的终端显示:

在这里插入图片描述


make install 后的终端显示:

在这里插入图片描述


在终端输入afl-fuzz,能出现如下图所示界面,说明安装成功。

在这里插入图片描述


3、Fuzzing

(1)测试代码

 #include <stdio.h> 
 #include <stdlib.h>
 #include <unistd.h>
 #include <string.h> 
 #include <signal.h> ​
 int vuln(char *str)
 {
	int len = strlen(str);
    if(str[0] == 'A' && len == 66)
    {
        raise(SIGSEGV);
        //如果输入的字符串的首字符为A并且长度为66,则异常退出
    }
    else if(str[0] == 'F' && len == 6)
    {
        raise(SIGSEGV);
        //如果输入的字符串的首字符为F并且长度为6,则异常退出
    }
    else
    {
        printf("it is good!\n");
    }
    return 0;
}

int main(int argc, char *argv[])
{
    char buf[100]={0};
    gets(buf);//存在栈溢出漏洞
    printf(buf);//存在格式化字符串漏洞
    vuln(buf);​
    return 0;
}

(2)准备初始种子

  • afl_test:保存初始种子,一个文件,里面随便写点内容,如‘aaaa’;
  • fuzz_in:种子池,变异后有用的种子会保存到该目录下;
  • fuzz_out:记录引发崩溃的种子样本,以及其他样本。
    在这里插入图片描述

(3)编译上述源代码
  输入命令afl-gcc -g -o ./afl-test/afl-test ./afl-test/testcase.c

注:testcase.c就是刚刚用于测试的源代码,./afl-test/afl-test用于保存编译后得到的文件

在这里插入图片描述

编译后,文件目录情况:

在这里插入图片描述
(4)准备Fuzzing

  使用命令afl-fuzz -i fuzz_in -o fuzz_out ./afl-test/afl-test

在这里插入图片描述

按照提示,在命令行输入echo core >/proc/sys/kernel/core_pattern
然后重新输入afl-fuzz -i fuzz_in -o fuzz_out ./afl-test/afl-test


下面是执行结果:
在这里插入图片描述

have a nice day ! 😃😃😃

(4)查看崩溃种子
下面是fuzz_out目录下保存的结果,崩溃种子保存在crash目录下。

在这里插入图片描述

使用xxd id:000001,sig:11,src:000002,op:havoc,rep:128命令可以查看种子。

在这里插入图片描述

后续工作就是分析种子了,会用到汇编知识,速成篇只能学到这儿了😭😭😭

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

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

相关文章

【Python 文本挖掘】零基础也能轻松掌握的学习路线与参考资料

Python文本挖掘是利用Python语言和相关文本挖掘工具对大量文本数据进行分析和挖掘的过程。Python在文本挖掘方面广泛应用于自然语言处理、情感分析、主题建模、关键词提取等领域。 学习Python文本挖掘需要掌握Python编程基础、数据分析和可视化、自然语言处理、机器学习等知识…

Flutter:功能型组件(3)- 拖拽组件、缩放平移组件

拖拽组件 拖拽组件包含 Draggable、LongPressDraggable 和 DragTarget。 Draggable、LongPressDraggable 为可拖拽的组件&#xff0c;LongPressDraggable 继承自Draggable&#xff0c;因此用法和 Draggable 完全一样&#xff0c;唯一的区别就是 LongPressDraggable 触发拖动的…

nginx添加nginx-sticky-module模块步骤

nginx-sticky-module模块是nginx实现负载均衡的一种方案,和ip_hash负载均衡算法会有区别的 ip_hash 根据客户端ip将请求分配到不同的服务器上.sticky 根据服务器个客户端的cookie,客户端再次请求是会带上此cookie,nginx会把有次cookie的请求转发到颁发cookie的服务器上. 安装…

AI工具合集!一共600+覆盖全行业,除了ChatGPT,那你也会喜欢这些其他的AI工具

如果你喜欢ChatGPT&#xff0c;那你也会喜欢这些其他的AI工具。 AI正在改变我们的工作方式&#xff0c;我不想错过充分利用它的机会&#xff0c;所以我尝试了一系列AI工具来节省时间&#xff0c;提高我的工作效率。 这里有个集合了600ai工具的合集包。 序号AI工具名称AI分类A…

I.MX RT1170加密启动详解(4):OTFAD XIP加密运行代码

本节将介绍基于AES加密的OTFAD引擎&#xff0c;它可以在不影响AES-128-CTR性能的情况下实时解密数据。OTFAD包括对AES密钥展开机制的完整硬件支持&#xff0c;它可以解密最多4个唯一的AES上下文。每个上下文都有一个用户定义的128位的Image Encryption Key(IEK)、一个64位的计数…

uniapp的movable-view、movable-area

uniapp的movable-view、movable-area movable-view&#xff1a; 可以在页面中拖拽滑动必须在movable-area组件中&#xff0c;并且必须是直接子节点必须设置width和height属性&#xff0c;不设置默认为10px提供特殊事件&#xff1a;htouchmove和vtouchmove movable-area&#xf…

用于ECharts的全国省市区县乡镇街道级的行政区划边界数据(GeoJSON格式)

https://map.vanbyte.com 提供了免费的省市县3级行政边界数据(GeoJSON格式)、省市县乡4级联动数据。 至于行政区划边界数据的来源&#xff0c;网络上有各种教程。授人以鱼不如授人以渔&#xff0c;下面记录一下各类方法的具体步骤。 来源1&#xff1a;阿里云的数据可视化平台…

听劝 不要盲目的学网络安全。

听劝 不要盲目的学网络安全。 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发. 3.有时多 google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答. 4.遇到实在搞不懂的,可…

webpack-dev-server 不是内部或外部命令,也不是可运行的程序 或批处理文件

一、问题描述 webpack-dev-server 不是内部或外部命令,也不是可运行的程序 或批处理文件 出现上述问题 一般是node.js的版本不一致造成。 二、解决方法&#xff1a;换成低版本的node.js node.js换成12或11版本即可 2.1.先卸载高版本node.js 在控制面板中卸载node.js,并删除安…

【算法】常见的加密算法及实现

文章目录 前言1. 数字签名2. 加密和解密2.1. 加密2.2. 解密 3. 对称加密和非对称加密3.1. 对称加密3.2. 非对称加密 4. 常见的签名加密算法4.1. MD5算法4.2. SHA1算法4.3. HMAC算法4.4. AES/DES/3DES算法4.4.1. DES算法4.4.2. 3DES算法4.4.3. AES算法 4.5. RSA算法4.6. ECC算法…

hbase简介与安装

Hbase简介 HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统&#xff0c;利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实现&#xff0c;类似Google Bigtable利用GFS作为其文件存储系统&#xff0c;HBase利用Had…

安装Linux-SUSE操作系统

文章目录 一、安装Linux-SUSE系统1、环境准备2、SUSE 镜像的下载2.1、下载企业服务器2.2、ARM和桌面的ISO 3、安装SUSE4、配置本地 yum 源5、SUSE常用安装命令6、在 SUSE系统上安装mysql数据库步骤&#xff1a;7、破解SUSE系统root密码 一、安装Linux-SUSE系统 1、环境准备 操…

7月蓄势待发,2023上海内部物流展,预登记全面启动!

观众预登记通道现已全面开放 展会时间 2023年7月5日 9:00-17:00 2023年7月6日 9:00-17:00 2023年7月7日 9:00-15:00 展会地点 上海新国际博览中心&#xff08;浦东新区龙阳路2345号&#xff09; 同期展会 2023上海国际AGV机器人产业展 2023上海国际电商物流包装产业展 2…

外包干了4年,今天分手了...

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

gcc-g++使用编译链接理解

在讲gcc/g使用之前我们先讲一下背景&#xff0c;编译链接 编译链接我们之前讲过一次&#xff0c;但是这里在深入理解一下编译链接&#xff0c;以及我们看一下现象 编译链接 首先&#xff0c;编译链接可以分为四步&#xff1a; 1.预处理 2.编译 3.汇编 4.链接 预处理 我…

java Stream流

体验Stream流 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素把集合中所有以"张"开头的元素存储到一个新的集合把"张"开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集合 public class MyS…

NDK环境变量配置及Jni生成so文件

1、通过AndroidStudio下载NDK和Cmake之后&#xff0c;需要在系统环境变量中进行NDK的配置&#xff0c;如下 (1)、NDK_HOME : D:\SDK\Sdk\ndk\22.1.7171670 (2)、将%NDK_HOME%同时添加到Path中 2、在AndroidStudio的File->Project Structure->SDK Location中选择ndk&…

Linux Shell_cut命令(按列提取文本字符)

linux cut命令&#xff08;按列提取文本字符&#xff09; cut是一个选取命令&#xff0c;就是将一段数据经过分析&#xff0c;取出我们想要的。一般来说&#xff0c;选取信息通常是针对“行”来进行分析的&#xff0c;并不是整篇信息分析的 语法格式 cut [-bn] [file] 或 cu…

2023届-SLAM算法校招面经

23年6月初终于尘埃落定&#xff0c;今年受大环境影响&#xff0c;这一路可以说是步履维艰&#xff0c;我的投递的行业主要面向机器人和自动驾驶&#xff0c;投递岗位大部分是算法工程师&#xff0c;其中也包括C开发和少量的测试岗&#xff0c;在面试过程中加深了对车企、自动驾…

15天学会EasyX 第1天:EasyX的下载与配置安装

本文为山城瑞宝创作&#xff0c;转载请标注版权&#xff01; 本文所指的编译器为Dev-c&#xff0c;如果有任何问题请私信我。 如果是使用VS的伙伴&#xff0c;直接去官网一键安装就可以了&#xff08;会略讲&#xff09;。 EasyX官网地址&#xff1a;https://easyx.cn/ 目录 …