1.AFL模糊测试tiff

AFL的安装已经在前文记录过American Fuzzy Lop(AFL)的安装与简单使用,不再赘述。这里主要记录一下在使用AFL时的可以注意的点。

  • 最好选择由C或者C++编写的软件或是项目
  • 有可用的示例代码
  • 最好能自己编译插桩,Qemu模式比较慢
  • 最好有测试用例(语料库)

下面主要记录一下利用 AFL 模糊测试 tiff (一个图像处理软件) 的过程,有源码fuzz。

1.下载解压压缩包

$ wget https://download.osgeo.org/libtiff/tiff-4.3.0.tar.gz  # 下载压缩包
$ tar -zxvf tiff-4.3.0.tar.gz
$ cd tiff-4.3.0

2.编译插桩

将编译器指定为 afl-gcc,(c++程序需要将编译器指定为afl-g++) --disable-shared 指明构建静态库,查资料显示不加这个参数构建的好像是共享库,fuzz共享库可能需要编写一个简单的demo,所以简单起见,构建静态库。

$ ./configure CC="afl-gcc" CXX="afl-g++" --disable-shared #
$ make  # 然后再进行编译
$ make install

3.构建语料库,即准备测试用例作为种子文件

从网上找一些图片,AFL官方也给出了测试用例,我并没有采用官方的测试用例,因为后续还试用了一下AFL对测试用例的修剪功能,但官方的测试用例只有一个图片。

$ mkdir in   # 该文件夹下存放种子用例
$ cd in
$ wget https://dev-www.libreoffice.org/corpus/tiffuzzer_seed_corpus.zip
$ unzip tiffuzzer_seed_corpus.zip

4.开始fuzz

-i 指定输入用例目录, -o 指定结果输出的目录(会自动创建)。上一步解压出来的测试用例其实是放在 ./in/minimum-set-tif 文件夹下的,但是这里命令语句里写成 ./in 它也能读到测试用例。

$ cd ..
$ afl-fuzz -i ./in -o ./out ./tools/tiff2rgba @@  # ./tools 目录下的绿色文件都可以测试

这样直接fuzz能跑起来,但是会警告有些测试用例是没用的,建议修剪。警告如下图,所以接下来修剪一下测试用例

5.修剪测试用例

afl-cmin:移除执行路径相同的输入文件。 -i 输入, -o 修剪后的结果保存目录(会自动创建),修剪后input里只剩下一个文件了。

$ afl-cmin -i ./in/minimum-set-tif/ -o input -- ./tools/tiff2rgba @@


将 ./in 替换成 ./input 再跑一次就不报警告了

$ afl-fuzz -i ./input -o ./out ./tools/tiff2rgba @@

除了可以对多个文件整体进行修剪外,AFL还提供了对单个文件进行瘦身的功能,我们利用上一步精简后 input 目录下的一个文件来瘦身。
afl-tmin:减小单个输入文件的大小。需要注意的是 -i 后面跟的不能是目录,必须是文件,相应地,-o 输出出来的也是一个文件。

$ afl-tmin -i ./input/rhbz135888-1.tiff -o input_testcase -- ./tools/tiff2rgba @@

可以看到,直接瘦身到了 0 byte

2.Honggfuzz模糊测试tiff

Honggfuzz 的原理和使用整体上跟AFL很像,就不细说了。

$ wget https://download.osgeo.org/libtiff/tiff-4.3.0.tar.gz  # 下载压缩包
$ tar -zxvf tiff-4.3.0.tar.gz   # 解压
$ cd tiff-4.3.0
$ ./configure CC="hfuzz-gcc" CXX="hfuzz-g++" # 将编译器指定为 hfuzz-gcc,(c++程序需要将编译器指定为hfuzz-g++)
$ make  # 然后再进行编译
$ make install
$ mkdir in  # 该文件夹下存放种子用例
$ cd in
$ wget ......   # 从网上获取一些用例
$ cd ..
$ honggfuzz -s -f in -W out --./tools/tiff2rgba # -f 指定输入用例, -W 制定结果输出的文件(会自动创建)。

如下图,开跑

由于我只是想试用一下这两个模糊测试工具,并不是冲着发现漏洞去的,所以跑一会儿就手动(Ctrl+c)停止了。这两款工具好像并不会自动停止fuzz,所以何时手动终止测试也是一门学问,有时间再记录。
Fuzz其中有很多原理和机制也还没弄明白,欢迎指正和讨论。

参考文章,感谢大佬们:
https://foxglovesecurity.com/2016/03/15/fuzzing-workflows-a-fuzz-job-from-start-to-finish/
https://www.freebuf.com/articles/system/191543.html

模糊测试入门案例,利用AFL和Honggfuzz模糊测试Tiff相关推荐

  1. python网络渗透入门_利用Python进行Web渗透测试(四):HTTP协议基础

    本篇将会涉及: 什么是HTTP,以及HTTP的工作方式 HTTP的方法 一.什么是HTTP HTTP协议 HTTP全称超文本传输协议,一个设计用来来客户端和服务器之间进行通信的协议.HTTP在网络世界 ...

  2. 渗透测试入门25之一次完整的渗透测试实验

    渗透测试的一般思路: 侦查,信息收集,漏洞扫描,漏洞利用,提升权限,保持连接 本次实验只用到信息收集,漏洞扫描及漏洞利用 攻击机:Kali2.0 64位(192.168.41.131) 目标机:Win ...

  3. 渗透测试入门17之一次完整的渗透测试流程

    一次完整的渗透测试流程 目录 渗透测试 信息收集 漏洞探测 漏洞利用 内网转发 内网渗透 痕迹清除 撰写渗透测试保告 渗透测试 渗透测试就是利用我们所掌握的渗透知识,对一个网站进行一步一步的渗透,发现 ...

  4. 渗透测试入门11之一次完整的渗透测试实验

    渗透测试的一般思路: 侦查,信息收集,漏洞扫描,漏洞利用,提升权限,保持连接 本次实验只用到信息收集,漏洞扫描及漏洞利用 攻击机:Kali2.0 64位(192.168.41.131) 目标机:Win ...

  5. 利用AFL进行模糊测试

    1 模糊测试概述 1.1 模糊测试概念 模糊测试(Fuzzing),是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法.它是一种挖掘软件安全漏洞.检测软件健壮性的黑盒测试,它通过向 ...

  6. 知识普及:关于Fuzzing模糊测试入门原理及实践的讨论

    狩猎者网络安全旗下--知柯信息安全团队(知柯信安) 漏洞挖掘是否是真正的安全呢? "The best alternative to defense mechanisms is to find ...

  7. EasyExcel导出Excel表格到浏览器,并通过Postman测试导出Excel【入门案例】

    一.前言 小编最近接到一个导出Excel的需求,需求还是很简单的,只需要把表格展示的信息导出成Excel就可以了,也没有复杂的合并列什么的. 常见的导出Excel的技术: hutool easyExc ...

  8. 渗透测试入门24之渗透测试参考书、课程、工具、认证

    白帽子渗透测试入门资源:参考书.课程.工具.认证文章目录 前言 名词解析 Pwk课程与OSCP证书 CTF 工具 参考书 相关文献推荐 资源打包前言 初入渗透测试领域,过程中遇到不少错综复杂的知识,也 ...

  9. 白帽子渗透测试入门资源:参考书、课程、工具、认证

    完整原文(实时更新):https://exp-blog.com (转载请注明出处,仅供分享学习,严禁用于商业用途) 前言 初入渗透测试领域,过程中遇到不少错综复杂的知识,也遇到不少坑,特此记录,慢慢整 ...

最新文章

  1. 吴恩达教你读论文:持续而缓慢的学习,才是正道
  2. 偶尔,当拍摄从相册或图片相机拍摄照片黑色解决问题的方法,解决问题和头部转动的方法...
  3. FreeBSD中3D加速功能的启用
  4. 【pyqt5学习】——graphicView显示matplotlib图像
  5. 优化网站设计(三):对资源添加缓存控制
  6. 追佛信道不如追求真理。。
  7. webpack-工程化工具
  8. 计算机制作贺卡教案,制作贺卡教案
  9. 合并排序时间复杂度推导
  10. Unity渲染性能优化总纲
  11. 23根火柴游戏程序,c语言实现人和计算机一起玩。 每日一题--20200423--
  12. PHP_XLSXWriter 样式,使用PHP_XLSXWriter代替PHPExcel
  13. 元数据是什么?举例告诉你什么是元数据
  14. linux的systemctl命令介绍
  15. MissileDatcom 导弹气动计算
  16. amoled led 排列_AMOLED 屏幕和 LCD 屏幕哪个更伤眼?
  17. windows7 和linux双系统,win7与linux双系统_win7 linux双系统
  18. Unity3D优化技巧系列一
  19. MyBits使用基础
  20. 灰度图Gray Scale Image 或是 Gray Scale Image

热门文章

  1. Hi3559AV100 himm报错
  2. 系统学习Pytorch笔记六:模型的权值初始化与损失函数介绍
  3. 易趣已是黄昏落日盖棺瞑目
  4. html float属性both,CSS——float属性及Clear:both备忘笔记
  5. lua中的sort排序
  6. ARTS Week 20
  7. 比例放大器设置接线US-DAS1/US-DAS2
  8. 坑爹的jack-server
  9. 漫步STL-map AND set
  10. 最新公路测量计算机,公路工程施工测量计算系统