(20210215 - 这篇文章是很久之前记录在简书的草稿箱中的,这次翻出来,就迁移过来)

2020/07/10 -

0. 引言

本文主要是阅读了文章[1]的简单总结,简单记录一下知识点,后续会安排更多的文章来具体描述。

1. Fuzz测试

在我之前的理解中,Fuzz测试就是通过构造不规则的输入,从而触发程序的某种bug;虽然也知道几款工具,但是只是停留在了解阶段。传统的漏洞挖掘包括三种方法:白盒代码审计,灰盒逆向工程,黑盒测试,Fuzz测试属于其中的黑盒测试。现在有了人工智能及深度学习的帮助,能够借助更多的方法来进行分析。不过,这种方法虽然看到过很多论文,但是效果有待考证。Fuzz测试也叫做模糊测试,通过输入非法字段,并观察软件是否异常来实现。一方面可以通过向软件输入非法字段,另一方面也可以通过向网络服务发送异常报文。

1.1 Fuzz实践遇到的问题

文章测试的对象是一个FTP服务器,也就是要利用网络报文来进行测试;文中提到,在实践过程中,主要遇到了一下的几个问题,这也是我一开始比较疑惑的。

  • 网络协议是有状态的,需要持续跟进网络协议的状态,分别对每个阶段进行测试,所以需要一些特有的程序来实现复杂的逻辑。
  • 如何构造异常,这个问题算是比较基础的
  • 如何发现被测设备是异常的呢?

思考:

  • 有状态的程序进行测试,对应第一个问题,这种方式从这个问题上来看好像很简单。但是对于一个可执行程序来说,如何进行测试呢?前面的问题本质上是因为你知道ftp协议每个阶段都是要干什么,但是给你一个另外的程序,你能知道他的逻辑吗?即使知道逻辑,但是你能知道怎么样让他走这个逻辑吗?
  • 第三个问题也比较关键,是不是只要保温发送过去,然后没有回复报错就是异常呢?还是怎么样?文章提到了利用内存泄露的方法来查看,但是这种方式是不是就界定了这种东西就必须是本地执行的呢?

实例

文章[1]中的实例是对一个FTP服务机型测试,通过在不同阶段构造不同的输入来测试,他的异常异常报文比较简单,就是一个长字符串;他检测异常的方式比较简单,在发送了异常的报文之后,如果没有收到回复,那就推断这个服务可能存在bug。


上面一部分文字是很久之前写的了,后来又简单接触了fuzzing部分的内容;通过仔细阅读之后,这方面的内容还是比较多的。
从整体来说,如果是要入手的话,我觉得两个问题比较重要:

  • 如何对构造输入
  • 如何监控程序

如果能够解决监控程序的问题,而且粒度越细越好,那么关键问题就是构造输入。
这是从宏观的角度,如果粒度细一点,例如到达要检测的程序这个粒度,可能根据这个程序是否存在源码,或者是否可以监控等等,又可以划分很多类别。

不管怎么样,都涉及到一个关键问题,那就是可能存在的状态空间爆炸;但是实际上,如何缓解状态空间爆炸,就需要利用先验知识,或者程序的反馈(监控信息)来实现。


20210223 -

相关文章记录

Fuzzing技术总结(Brief Surveys on Fuzz Testing) - 知乎

参考文章

[1]攻防:黑客技术与Fuzz测试

Fuzz测试 - 基础相关推荐

  1. FUZZ测试某狗WAF绕过

    题记 Fuzz是安全测试的一种方法,也是极为重要的一种手段!当你面对waf无所适从的时候,这时候你就可以Fuzz模糊测试来绕过waf,甚至你可以发现一些意想不到的姿势!最近两天我会对fuzz测试进行介 ...

  2. 【转载】探索式测试基础系列—生活进阶曲

    在探索式测试落地实践中奏出了协奏曲后进入到高级阶段,如何在问题定位和经验积累中发挥作用,也可以理解为在生活达到非常和谐后,如何孕育一个后代并为其提供良好的环境,因此本章的名字叫做生活进阶曲,表明在本章 ...

  3. java+JBroFuzz对restful api进行fuzz测试

    @本文原创,转载请注明 0X00: 序言 fuzz测试作为安全测试的一个基本策略,被越来越多的引入整个测试过程,来避免一些简单的可能引发的安全问题. 如何将fuzzing测试引入软件自动化测试过程是本 ...

  4. 《软件测试技术大全:测试基础 流行工具 项目实战(第3版)》—第1章1.2节软件测试的发展...

    本节书摘来自异步社区<软件测试技术大全:测试基础 流行工具 项目实战(第3版)>一书中的第1章,第1.2节软件测试的发展,作者陈能技 , 黄志国,更多章节内容可以访问云栖社区"异 ...

  5. 测试岗位面试前复习之【测试基础知识篇】

    测试基础知识篇 一.app测试相关 1.android与ios的app测试的区别: 2.app测试和web测试的重点: 3.性能测试考量的指标: 4.app的性能测试,需要重点关注哪些方面? 5.站在 ...

  6. 01_测试基础知识---微信公众号测试点

    一丶微信公众号测试点 基础功能点: 1:是否可以正常的关注和取消关注.(至于用户的管理是微信平台的事情了,就不需要我们去处理了) 2:保证我们自己提供出去的二维码能够被用户识别,扫描后即可关注我们. ...

  7. app安全测试-OWASP ZAP 2.8 使用指南(一):安全测试基础及ZAP下载、安装

    概览 本文意在对于OWASP's Zed Attack Proxy(ZAP)软件做一个基本使用指南介绍. ZAP是一个用于实施安全性测试的工具,即使没有很强的安全测试背景也可以很好的使用. 为了达到这 ...

  8. JMeter-01-性能测试基础知识介绍

    JMeter-01-性能测试基础知识介绍 开篇词 性能测试常见分类 Web服务的主要指标 前端页面的主要指标 数据库的主要指标 开篇词 参加工作这些年来,性能测试做过不少,主要用的LoadRunner ...

  9. 测试基础+性能测试+自动化测试面试题(含答案)

    目录 测试基础 一.没有需求文档,如何开展测试 二.如何提高用例的覆盖率,减少漏测 三.在浏览器中输入了一个 url 后,请求流程是什么样的 四.说几个常见的 HTTP 请求头字段吧 五. 测试用例里 ...

最新文章

  1. TensorFlow2-高阶操作
  2. SAP Spartacus和Table相关的配置结构ResponsiveTableConfiguration
  3. 使用AspectJ和Spring简化了AOP
  4. 体验微软反间谍软件及恶意软件清除工具
  5. 未能将管道连接到虚拟机: 所有的管道范例都在使用中。_山西大同超高压管道连接器维修方便厂家...
  6. 《天天数学》连载36:二月五日
  7. 解决关闭hbase时stop-hbase.sh报错stopping hbasecat: /tmp/hbase-xxxx-master.pid: No such file or directory
  8. 一个 Accept-Encoding 引发的 requests 爬虫乱码问题
  9. 检查数组中的子字符串– Java,Python和Swift
  10. sw4stm32开发stm32
  11. 如何将 Mac 镜像到电视
  12. ac8265网卡linux驱动,英特尔8265无线网卡驱动
  13. 面试技巧 面试复盘 编程技术 架构 看这一篇就够了
  14. MOS管(场效应管)导通条件
  15. 小米mix2 原生android,小米MIX2 安卓10 原生体验 LineageOS17.1 ROOT
  16. 单体架构与微服务架构的区别
  17. 关于阻止迅雷上传,带慢计算机的工具
  18. mysql分组取最新时间的数据
  19. 电脑怎么连接隐藏的无线WiFi信号呢?
  20. 靠追热点出圈,网易传媒打造“爆款制造机2.0”

热门文章

  1. Linux的Shell--Sed操作(指定行增加删除内容)
  2. JavaScript扫盲
  3. 毕业答辩PPT模板364套(免费资源)
  4. Java核心类库之(多线程:实现多线程、线程同步)
  5. 没有太空电梯的废铁镇——来一波未来风蒸汽朋克(第二辑)
  6. 基于Docker的拓扑网络搭建可行性探究
  7. C++字符类型TCHAR、char和wchar_t
  8. 教你看懂存储卡的速度,U3 U1 ⑩ ④ V30 V60 V90 A1 A2
  9. soa是什么?主要是那些技术
  10. 转 深入探讨SOAP、RPC和RMI