fuzzing学习
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
参考
Awesome-Fuzzing(很好的资源合集)
fuzzing.info(paper)
fuzzing学习的更多相关文章
- ref:一系列用于Fuzzing学习的资源汇总
ref:http://www.freebuf.com/articles/rookie/169413.html 一系列用于Fuzzing学习的资源汇总 secist2018-04-30共185833人围 ...
- Peach+Fuzzer
目录 1 Peach是什么....................................................................................... ...
- 一个浏览器Fuzzing框架的学习
一个浏览器Fuzzing框架的学习 关于框架 之前是LCatro师傅在小密圈分享的他写的这个Fuzzing框架(不过我以前翻github时好像就看到过),但是之前一直没啥时间搞这方面,这两天研究学习了 ...
- 关于文件格式Fuzzing测试与漏洞挖掘的学习
最近对于文件的漏洞挖掘比较感兴趣,所以在找资料来看.顺带记录笔记,把这些笔记贴在博客中分享一下.最近打算把精力放在mp3格式的漏洞发掘上,一来这是常见的文件格式格式也比较清晰.二来这也是学长推荐的入手 ...
- 学习S5
rztyfx的专栏 目录视图 摘要视图 订阅 [专家问答]阿里陈康贤:探讨大型网站之架构 走进VR开发世界——我们离开发一款VR大作还有多远? C ...
- VxWorks Fuzzing 之道:VxWorks 工控实时操作系统漏洞挖掘调试与利用揭秘
转载:freebuf 0×00 前言 关于VxWorks,这里引用44CON议题<攻击 VxWorks:从石器时代到星际>探究 一文章中的介绍: VxWorks 是世界上使用最广泛的一种在 ...
- ref:web security最新学习资料收集
ref:https://chybeta.github.io/2017/08/19/Web-Security-Learning/ ref:https://github.com/CHYbeta/Web-S ...
- Winafl学习笔记
最近在跟师傅们学习Winafl,也去搜集了一些资料,有了一些自己的理解,就此记录一下. Winafl是一个运行时插桩工具,可以提高crash的捕获率. 同时也有自己的遗传算法,可以根据代码覆盖程度进行 ...
- MP3 Fuzz学习
这篇文章主要是学习一波MP3格式fuzz的知识.目录如下 0x0.MP3格式的构成 0x0.MP3格式的构成 MP3是一种通俗叫法,学名叫MPEG1 Layer-3.MP3是三段式的结构,依次由ID3 ...
随机推荐
- [Noi2015]软件包管理器 BZOJ4196
分析:水题 每次安装的时候和根节点求lca的过程中区间覆盖+区间查询 每次删除的时候查询子树中安装的数量+区间覆盖 附上代码: #include <cstdio> #include < ...
- 【Canal源码分析】Sink及Store工作过程
一.序列图 二.源码分析 2.1 Sink Sink阶段所做的事情,就是根据一定的规则,对binlog数据进行一定的过滤.我们之前跟踪过parser过程的代码,发现在parser完成后,会把数据放到一 ...
- Jenkins使用教程
1 软件安装 1.1 运行环境 1.1.1 Maven的安装 1.1.2 Git的安装 1.1.3 Tomcat的安装 1.2 安装Jenkins 1.2.1 msi和war包安装2 ...
- maven创建web报错Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins:maven-compiler-plugin:maven-compiler-plugin:3.5.1:runtime Cause: error in opening zip file
Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins:maven-compiler-plugin:m ...
- php多进程模型 开箱即用
仓库地址 https://github.com/xieyong1023/MultiProcess 安装 使用composer 将仓库加到你的项目composer.json的repositories下 ...
- Navicat:实现两个数据库结构同步和数据库对比
Navicat版本:Navicat Premium 12 选择 工具 ——> 结构同步 选择源数据库和目标数据库,选择完成后点击右下角对比按钮 要修改的对象:源数据库和目标数据库中都有的 ...
- JQuery --- 第三期 (jQuery事件相关)
个人学习笔记 1.JQuery事件绑定 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- sublime text 3 无法安装Package Control插件解决办法
sublime text 3 无法安装Package Control插件解决办法 ***关于sublime text 3 常用的 Package Control插件的安装方法*** 1.CTRL+` ...
- Windows Server 2016-批量设置用户下次登陆须更改密码
Powershell设置某OU下所有用户下次登陆必须更改密码: Get-ADUser -Filter * -SearchBase "ou=syncall,dc=azureyun,dc=com ...
- centos7下报错: import requests ImportError: No module named requests
在网上扒了一个python脚本,在centos7上执行的时候报错: import requestsImportError: No module named requests 原因是:requests是 ...