1、简介

1.1 fuzzing

  模糊测试(fuzzing)是一种通过向程序提供非预期的输入并监控输出中的异常来发现软件中的故障的方法。

  用于模糊测试的模糊测试器(fuzzer)可以按照以下3种方式进行分类:

  • 根据是否从已有输入衍生出新的输入,分为基于变异的、基于生成的模糊测试器
  • 根据是否理解输入结构,分为迟钝的、聪明的模糊测试器
  • 根据是否理解程序结构,分为白盒、灰盒、黑盒的模糊测试器

  基于变异的模糊生成器需要提供原始输入,称之为输入种子(input seed),在这些种子输入之上去产生新的输入。比如有一个种子输入库,库中有1000个数,基于变异的模糊生成器将这1000个数全部加1,作为新的输入,而基于生成的模糊测试器有可能只是产生1000个随机数。

  smart模糊测试器根据输入结构的特性来生成输入,比如,现在库中有1000个数,其中900个在0-1000之类,那么smart模糊生成器生成的新输入保证9/10的新输入在0-1000之类。dumb模糊生成器就不管这些已有的输入特性,比如生成平均分布的测试输入。

  黑盒、灰盒、白盒就比较直接了,软件测试里面的基本概念。比如黑盒测试就是完全不知道程序内部结构,白盒测试中有一种叫路径覆盖,保证测试用例执行程序所有路径,灰盒测试则介于两者中间。

1.2 fuzzing和符号执行

  符号执行的很大问题就是路径爆炸,fuzzing和符号执行相比,覆盖率不如符号执行,但是有更高的效率。

2、模糊测试框架

  Coverage-Guide Fuzzing:AFL、libFuzzer 、honggfuzz 、AFLFast 、VUzzer 、CollAFL 。目标是提高代码覆盖。通过插桩的方式来检测代码覆盖率。

  Target-Directed Fuzzing:AFLGo 。其他目标的Fuzzing

参考

模糊测试

wiki

Awesome-Fuzzing(很好的资源合集)

fuzzing.info(paper)

fuzzing学习的更多相关文章

  1. ref:一系列用于Fuzzing学习的资源汇总

    ref:http://www.freebuf.com/articles/rookie/169413.html 一系列用于Fuzzing学习的资源汇总 secist2018-04-30共185833人围 ...

  2. Peach+Fuzzer

    目录 1 Peach是什么....................................................................................... ...

  3. 一个浏览器Fuzzing框架的学习

    一个浏览器Fuzzing框架的学习 关于框架 之前是LCatro师傅在小密圈分享的他写的这个Fuzzing框架(不过我以前翻github时好像就看到过),但是之前一直没啥时间搞这方面,这两天研究学习了 ...

  4. 关于文件格式Fuzzing测试与漏洞挖掘的学习

    最近对于文件的漏洞挖掘比较感兴趣,所以在找资料来看.顺带记录笔记,把这些笔记贴在博客中分享一下.最近打算把精力放在mp3格式的漏洞发掘上,一来这是常见的文件格式格式也比较清晰.二来这也是学长推荐的入手 ...

  5. 学习S5

                  rztyfx的专栏       目录视图 摘要视图 订阅 [专家问答]阿里陈康贤:探讨大型网站之架构    走进VR开发世界——我们离开发一款VR大作还有多远?     C ...

  6. VxWorks Fuzzing 之道:VxWorks 工控实时操作系统漏洞挖掘调试与利用揭秘

    转载:freebuf 0×00 前言 关于VxWorks,这里引用44CON议题<攻击 VxWorks:从石器时代到星际>探究 一文章中的介绍: VxWorks 是世界上使用最广泛的一种在 ...

  7. ref:web security最新学习资料收集

    ref:https://chybeta.github.io/2017/08/19/Web-Security-Learning/ ref:https://github.com/CHYbeta/Web-S ...

  8. Winafl学习笔记

    最近在跟师傅们学习Winafl,也去搜集了一些资料,有了一些自己的理解,就此记录一下. Winafl是一个运行时插桩工具,可以提高crash的捕获率. 同时也有自己的遗传算法,可以根据代码覆盖程度进行 ...

  9. MP3 Fuzz学习

    这篇文章主要是学习一波MP3格式fuzz的知识.目录如下 0x0.MP3格式的构成 0x0.MP3格式的构成 MP3是一种通俗叫法,学名叫MPEG1 Layer-3.MP3是三段式的结构,依次由ID3 ...

随机推荐

  1. EffictiveC++笔记 第2章

    Chapter 2 构造 / 析构 / 赋值 条款 05:了解C++ 默默编写并调用哪些函数 如果你写下: class Empty{ }; 事实上编译器会帮你补全: class Empty{ publ ...

  2. Spring Boot之WebSocket

    一.项目说明 1.项目地址:https://github.com/hqzmss/test01-springboot-websocket.git 2.IDE:IntelliJ IDEA 2018.1.1 ...

  3. 大白话5分钟带你走进人工智能-第十五节L1和L2正则几何解释和Ridge,Lasso,Elastic Net回归

    第十五节L1和L2正则几何解释和Ridge,Lasso,Elastic Net回归 上一节中我们讲解了L1和L2正则的概念,知道了L1和L2都会使不重要的维度权重下降得多,重要的维度权重下降得少,引入 ...

  4. 咸鱼Chen

    关于我 网名:咸鱼Chen 英文:nick chen 签名:I'm nothing but I must be everything. 标签:Python爱好(ma)者(nong),干过后端开发.算法 ...

  5. javascript模块化编程 从入门到实战

    <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...

  6. Java核心技术梳理-集合

    一.前言 在日常开发中,我们经常会碰到需要在运行时才知道对象个数的情况,这种情况不能使用数组,因为数组是固定数量的,这个时候我们就会使用集合,因为集合可以存储数量不确定的对象. 集合类是特别有用的工具 ...

  7. Redis--Memched--Cache缓存介绍使用

    目录:  一.分布式缓存—Redis与Memched的区别 1.1.      数据支持类型 1.2.      持久性 1.3.      内存利用情况 1.4.      数据一致性 1.5.   ...

  8. 关于Node.js中的路径问题

    在前端学习过程中,涉及到路径的问题非常多,相对路径,绝对路径等.有时候明明觉得没问题,但是还是会出错.或者说线下没问题,但是到了线上就出现问题,因此弄懂路径问题,非常关键.我们需要知道为什么这个地方既 ...

  9. 『调错』OGG Error opening module ggjava_ue.dll

    Win7 配置 OGG (GoldenGate) Adapter Java 时, 报错: ERROR OGG-01122 Oracle GoldenGate Capture, javaue.prm: ...

  10. 服务端预渲染之Nuxt (使用篇)

    服务端预渲染之Nuxt - 使用 现在大多数开发都是基于Vue或者React开发的,能够达到快速开发的效果,也有一些不足的地方,Nuxt能够在服务端做出渲染,然后让搜索引擎在爬取数据的时候能够读到当前 ...