AFL初次尝试

看了一些fuzz的文章但是一直没有做过小的demo,这次算是入门级别的尝鲜。

AFL的安装

安装环境:vm虚拟机、Ubuntu18

  1. 首先检测LLVM和CLANG是否安装:
sudo apt-get install clang
sudo apt-get install llvm

安装时出现的问题:

E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?

解决方案:

ps -e | grep apt

然后执行sudo kill 进程号

  1. 在目录下下载包
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命令

选择目标程序

本人采用了网上的简单代码来进行测试

  • 创建一个testfile文件夹,然后在该文件夹下创建测试文件afl_test.c,内容如下:
#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
  • 这里的gcc -g是在编译的时候,生成调试信息,该程序可以被调试器调试。
  • 接着建立fuzz_in文件夹,创建输入文件testcase,输入文件中写几个简单单词,fuzzing时会产生变异。
mkdir fuzz_in
echo "hello" > fuzz_in/testcase
  • 执行下列语句就开始fuzz了
afl-fuzz -i fuzz_in -o output ./afl_test

结果出错了

解决方案:

$ sudo su
$ echo core >/proc/sys/kernel/core_pattern
  • 再次执行下列语句开始fuzz
afl-fuzz -i fuzz_in -o output ./afl_test

  • Ctrl+c手动终止fuzz

参考文章,感谢大佬!
https://blog.csdn.net/weixin_50972562/article/details/123379898

https://blog.csdn.net/weixin_39448417/article/details/99703723

Fuzz初尝试:AFL安装和使用相关推荐

  1. SQLSERVER2012里的扩展事件初尝试(上)

    SQLSERVER2012里的扩展事件初尝试(上) SQLSERVER2012里的扩展事件初尝试(下) 周未看了这两篇文章: 扩展事件在Denali CTP3里的新UI(一) 扩展事件在Denali ...

  2. Synopsys初体验——软件安装篇

    Synopsys初体验--软件安装篇 前言 一.虚拟机VMware的安装与使用 1.软件安装 2.创建自己的虚拟机 二.Synopsys系列软件的安装 前言 时光飞逝,转眼间已经是将要毕业的人了.之前 ...

  3. HarmonyOS实战—原子化服务初尝试

    目录 原子化服务初尝试 什么是原子化服务 原子化服务的优点 创建原子化服务项目 运行原子化服务项目 目录结构分析 原子化服务初尝试 什么是原子化服务 原子化服务是HarmonyOS提供的一种面向未来的 ...

  4. Serverless 开发前端初尝试

    Serverless 开发前端初尝试 啥是云开发 云开发serverless是一种模式,和传统模式的区别在于开发者不用维护服务器.服务器的日常维护, 负载均衡,扩容和减容, 运维,安全,日志等都交给了 ...

  5. Wireshark研究血族Bloodline手游聊天系统 - 初尝试

    血族Bloodline手游聊天系统的相关研究 目录 1. 介绍&起因 2. Fiddler初尝试 3. Wireshark初尝试 4. 总结 一.介绍&起因 ↶ (PS. 容我说先几句 ...

  6. eclipse Debug 初尝试 (09.10教师节(*^▽^*))

    09.10 eclipse Debug 初尝试 首先我们新建一个project,class.在其中写入我们即将要调试的源代码. 点击工具栏的瓢虫图标,进入debug界面(或者点击上面的Run-> ...

  7. Cydia Substrate 初尝试:刷计步软件数据

    Cydia Substrate 初尝试:刷计步软件数据 Cydia Substrate 初尝试刷计步软件数据 Cydia 设备准备 探索 思路 监听器注册 事件分发 进行Hook Cydia Cydi ...

  8. Redis安装以及在Idea中使用Redis初尝试

    本文主要完成两方面的内容,一是  安装Redis服务端及验证:二是在Idea中链接Redis,并且编写程序初步使用Redis 1:安装Redis服务端及验证(win10-64位) Redis是一个开源 ...

  9. Ubuntu 安装常用软件、做Windows10系统盘、初尝试更换硬盘

    一.先唠一唠我买硬盘的事 电脑前几天突然开不开机,画面一直卡在logo,上网查了排查后基本能确定是硬盘的问题,不想去修电脑那修,我选择自己更换硬盘,要是原来硬盘没坏我还可以用把那个硬盘改成移动盘,要是 ...

最新文章

  1. linux echo写php编码,linux使用和基础操作(示例代码)
  2. [TJOI2017]城市(未解决)
  3. oracle biee需要买吗,oracle BIEE 和 IBM cognos的优点和缺点
  4. GdiPlus[15]: IGPLinearGradientBrush 之 GammaCorrection
  5. Shuffle a Array
  6. android开机优化-framework
  7. WIFI 2.4G及5G信道划分表(附无线通信频率分配表)
  8. 【SEED Labs 2.0】ICMP Redirect Attack Lab
  9. 微信小程序画布实现星星闪烁
  10. 云计算产品经理入门(一)
  11. android google map 标记,android,在googlemap上从位图添加标记
  12. 我让Chat GPT准备了几份SAP 顾问英文面试自我介绍的模板,大家感受一下
  13. MP地面站二次开发教程(五)简易地面站多机控制系统框架
  14. 奇偶校验,异或校验,和校验,nios串口校验
  15. 神都夜行录怎么在电脑上玩 神都夜行录安卓模拟器教程
  16. 学习自旋电子学的笔记01:微磁模拟软件OOMMF的教程(中文版)16章
  17. 朋友圈晒计算机三级证书,我在朋友圈晒成就感,有错吗?
  18. Python程序来计算锥体的体积和面积
  19. 来都来了,确定不白嫖吗?!
  20. 每日分享:Word如何翻译成中文

热门文章

  1. java http 401_java – 处理401错误(Spring Security)
  2. protobuf教程(一)---引入其他proto文件
  3. ssm毕设项目拼车平台0k47u(java+VUE+Mybatis+Maven+Mysql+sprnig)
  4. 论文(2):智能车辆、自主车辆、地面无人平台、机器人、自动化、智能驾驶等相关英文术语整理
  5. 一起来解读分布式日志收集系统:Facebook Scribe
  6. 不写sql的Java_解放双手,不写SQL!一个开源mybatis神器
  7. 消息推送之百度云推送Android集成与使用方法
  8. Unity平滑函数Lerp简单介绍
  9. Shader中Smoothstep和Lerp的区别
  10. karaf maven