Fuzz测试 - 基础
(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测试 - 基础相关推荐
- FUZZ测试某狗WAF绕过
题记 Fuzz是安全测试的一种方法,也是极为重要的一种手段!当你面对waf无所适从的时候,这时候你就可以Fuzz模糊测试来绕过waf,甚至你可以发现一些意想不到的姿势!最近两天我会对fuzz测试进行介 ...
- 【转载】探索式测试基础系列—生活进阶曲
在探索式测试落地实践中奏出了协奏曲后进入到高级阶段,如何在问题定位和经验积累中发挥作用,也可以理解为在生活达到非常和谐后,如何孕育一个后代并为其提供良好的环境,因此本章的名字叫做生活进阶曲,表明在本章 ...
- java+JBroFuzz对restful api进行fuzz测试
@本文原创,转载请注明 0X00: 序言 fuzz测试作为安全测试的一个基本策略,被越来越多的引入整个测试过程,来避免一些简单的可能引发的安全问题. 如何将fuzzing测试引入软件自动化测试过程是本 ...
- 《软件测试技术大全:测试基础 流行工具 项目实战(第3版)》—第1章1.2节软件测试的发展...
本节书摘来自异步社区<软件测试技术大全:测试基础 流行工具 项目实战(第3版)>一书中的第1章,第1.2节软件测试的发展,作者陈能技 , 黄志国,更多章节内容可以访问云栖社区"异 ...
- 测试岗位面试前复习之【测试基础知识篇】
测试基础知识篇 一.app测试相关 1.android与ios的app测试的区别: 2.app测试和web测试的重点: 3.性能测试考量的指标: 4.app的性能测试,需要重点关注哪些方面? 5.站在 ...
- 01_测试基础知识---微信公众号测试点
一丶微信公众号测试点 基础功能点: 1:是否可以正常的关注和取消关注.(至于用户的管理是微信平台的事情了,就不需要我们去处理了) 2:保证我们自己提供出去的二维码能够被用户识别,扫描后即可关注我们. ...
- app安全测试-OWASP ZAP 2.8 使用指南(一):安全测试基础及ZAP下载、安装
概览 本文意在对于OWASP's Zed Attack Proxy(ZAP)软件做一个基本使用指南介绍. ZAP是一个用于实施安全性测试的工具,即使没有很强的安全测试背景也可以很好的使用. 为了达到这 ...
- JMeter-01-性能测试基础知识介绍
JMeter-01-性能测试基础知识介绍 开篇词 性能测试常见分类 Web服务的主要指标 前端页面的主要指标 数据库的主要指标 开篇词 参加工作这些年来,性能测试做过不少,主要用的LoadRunner ...
- 测试基础+性能测试+自动化测试面试题(含答案)
目录 测试基础 一.没有需求文档,如何开展测试 二.如何提高用例的覆盖率,减少漏测 三.在浏览器中输入了一个 url 后,请求流程是什么样的 四.说几个常见的 HTTP 请求头字段吧 五. 测试用例里 ...
最新文章
- TensorFlow2-高阶操作
- SAP Spartacus和Table相关的配置结构ResponsiveTableConfiguration
- 使用AspectJ和Spring简化了AOP
- 体验微软反间谍软件及恶意软件清除工具
- 未能将管道连接到虚拟机: 所有的管道范例都在使用中。_山西大同超高压管道连接器维修方便厂家...
- 《天天数学》连载36:二月五日
- 解决关闭hbase时stop-hbase.sh报错stopping hbasecat: /tmp/hbase-xxxx-master.pid: No such file or directory
- 一个 Accept-Encoding 引发的 requests 爬虫乱码问题
- 检查数组中的子字符串– Java,Python和Swift
- sw4stm32开发stm32
- 如何将 Mac 镜像到电视
- ac8265网卡linux驱动,英特尔8265无线网卡驱动
- 面试技巧 面试复盘 编程技术 架构 看这一篇就够了
- MOS管(场效应管)导通条件
- 小米mix2 原生android,小米MIX2 安卓10 原生体验 LineageOS17.1 ROOT
- 单体架构与微服务架构的区别
- 关于阻止迅雷上传,带慢计算机的工具
- mysql分组取最新时间的数据
- 电脑怎么连接隐藏的无线WiFi信号呢?
- 靠追热点出圈,网易传媒打造“爆款制造机2.0”