有幸从一位师哥那里知道这个软件,但是由于实习刚刚结束,终于有时间一探当前最为强大而有效的漏洞挖掘技术。
首先我的电脑系统是WINDOWS10,而AFL支持的是Linux系统,当然大家如果不想安装双系统或者是虚拟机,可以下载WINAFL:下载地址
我正好想更熟悉Linux系统就下了个虚拟机,开始了我的探索旅程。

安装AFL

在指定目录下检查LLVM和CLANG是否安装:

sudo apt-get install clang
sudo apt-get install llvm

LLVM是一个自由软件项目,它是一种编译器基础设施,以C++写成,包含一系列模块化的编译器组件和工具链,用来开发编译器前端和后端。
Clang(发音为/ˈklæŋ/类似英文单字clang) 是一个C、C++、Objective-C和Objective-C++编程语言的编译器前端。 它采用了LLVM作为其后端,而且由LLVM2.6开始,一起发布新版本。
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。 这样不仅减少了root用户的登录和管理时间,同样也提高了安全性。
apt-get,是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。

在目录下下载包:

wget http://lcamtuf.coredump.cx/afl/releases/afl-2.52b.tgz
tar -zxvf afl-2.52b.tgz
cd afl-2.52b
make
sudo  make install

这时候输入afl -fuzz发现可以使用这个命令编译了:

选择目标程序

接下来我就要考虑用目标程序来测试了。
由于我是新手,我就先选择网上一些简单的代码来进行检测:代码出处

#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;
}

对此代码进行编译:

afl-gcc -g -o afl_test test.c

插桩:在AFL编译文件时候afl-gcc会在规定位置插入桩代码,可以理解为一个个的小断点(但是没有暂停功能),在后续fuzz的过程中会根据这些桩代码进行路径探索,测试等。使得测试覆盖面更广,更全面。
-o:指定生成的输出文件;

编译成功后如下图所示:

接着建立一个testcase的文件夹,建立一个几个字母的文件,然后可以在终端输入:

afl-fuzz -i testcase -o output ./afl_test

接下来我终于进入了它的UI界面:

然后我等了大概十五分钟,一个Crash都没跑出来,原博主只花了分钟。我寻思着我以前破解hash我的电脑花了8小时,别人的花了2小时,不知道是不是和这个有关系…

今天就先到这里了,以后再继续理解重要概念和AFL背后的原理。

小白初学AFL(American Fuzzy Lop)相关推荐

  1. AFL(american fuzzy lop)学习二

    AFL(american fuzzy lop)学习二 @sizaif @2022-04-10 设计思想 覆盖率计算 改进边缘覆盖: 向目标程序注入以下工具来捕获分支(边缘)覆盖率和分支命中计数 一条边 ...

  2. AFL(american fuzzy lop)学习三

    AFL(american fuzzy lop)学习三 @sizaif @2022-04-11 fork Server 为了提高性能,afl-fuzz 使用"fork server" ...

  3. AFL(american fuzzy lop)学习一

    AFL(american fuzzy lop)学习一 @sizaf AFL 的模糊方法 基于改进的边缘覆盖 插桩法引导的遗传算法 流程: 插桩 从源码编译程序时进行插桩,以记录代码覆盖率(Code C ...

  4. AFL——American Fuzzy Lop的基础使用

    AFL--American Fuzzy Lop的基础使用 因为某些奇怪的原因,我一个没搞过pwn的得来搞代码fuzz,只好学一下,顺便记一下. AFL的安装 在部分源有的情况下可以直接使用apt-ge ...

  5. AFL(American Fuzzy Lop)源码详细解读(1)

    AFL(American Fuzzy Lop)源码详细解读(1) 多亏大佬们的文章,对读源码帮助很大: https://eternalsakura13.com/2020/08/23/afl/ http ...

  6. AFL(American Fuzzy Lop)源码详细解读(3)

    AFL(American Fuzzy Lop)源码详细解读(3) 本篇是关于主循环阶段的内容,整个AFL最核心的部分,篇幅较长.最后简述一下afl_fuzz整体流程. 多亏大佬们的文章,对读源码帮助很 ...

  7. AFL(American Fuzzy Lop)源码详细解读(2)

    AFL(American Fuzzy Lop)源码详细解读(2) 本篇是关于 dry run (空跑.演练) 阶段的内容,一直到主循环之前. 多亏大佬们的文章,对读源码帮助很大: https://et ...

  8. AFL(American Fuzzy Lop)-afl-fuzz.c

    转载AFL(American Fuzzy Lop)源码详细解读(1) AFL(American Fuzzy Lop)源码详细解读(1) 多亏大佬们的文章,对读源码帮助很大: https://etern ...

  9. AFL(American Fuzzy Lop)源码详细解读(8)

    这篇记录 llvm mode 中的 afl-llvm-pass.so.cc 文件和 afl-llvm-rt.o.c 文件,以及整体流程的简述. 对llvm这部分理解还比较浅. 可以阅读大佬的这篇文章: ...

最新文章

  1. 更换yum的源为阿里云或者网易
  2. python图像边缘检测_python opencv实现图像边缘检测
  3. ListView设置EmptyView之后不显示
  4. JavaScript 动态创建标记
  5. [css] 写例子说明如何强制(自动)中、英文换行与不换行
  6. C++,string类的指针,string类数组的指针 string *s
  7. issubclass在python中的意思_python基础之类的isinstance与issubclass、反射
  8. Qt文档阅读笔记-QtConcurrent Progress Dialog Example解析
  9. 三星mega2 android os,GALAXY MEGA2
  10. amazon php 空间,如何将PHP图像资源放入Amazon Web Services?
  11. 1423. 可获得的最大点数
  12. centos nginx不是命令_Linux使用yum安装nginx服务教程
  13. 7820X+RTX2080Ti(Ubuntu 18.04)新机配置记录
  14. MOSS 2010:Visual Studio 2010开发体验(23)——编写自定义的BCS连接器
  15. Android学习---解决Android Graphical Layout 界面效果不显示
  16. 机器学习初学者入门实践:怎样轻松创造高精度分类网络
  17. 程序员为什么要写博客
  18. 电脑常见问题之-右键无新建文件夹选项
  19. RedHat 自定义Jenkins Slaver Service,并开机自启动
  20. SwiftUI Swift 内功之如何在 Swift 中进行自动三角函数计算

热门文章

  1. 如何用Python进行数据分析,需要掌握哪些技术?
  2. 使用Python生成和解码JWTToken
  3. Android手机连接蓝牙打印机连接不上的问题
  4. linux soundwire usb,soundwire server(无线音频传输软件)
  5. 数据结构:设计实现抽象数据类型“有理数”内容
  6. Mysql项目 github_GitHub开源项目2018-09-11更新精选
  7. ZooKeeper : Curator框架Znode、ACL API介绍
  8. 如何激发高中学生学习的动力
  9. 嵌入式系统开发笔记90:ALIENTEK MiniSTM32开发板原理图基本电路讲解
  10. python的urllib3