![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
模糊测试
文章平均质量分 87
模糊测试的相关内容
da1234cao
在安全领域生根发芽
展开
-
AFL文档的阅读&翻译&思考
AFL文档的阅读&翻译&思考原创 2021-03-08 15:01:09 · 424 阅读 · 0 评论 -
模糊测试中的动态符号执行
动态符号执行原创 2021-02-27 21:02:55 · 1096 阅读 · 0 评论 -
SMT简介
首先,通过一篇中文综述,我们简单了解 SMT 的名词解释, SMT 的应用场景。应用场景中,我们重点关注了测试用例的自动生成:通过动态符号执行获取执行路径;对前缀路径的最后一个节点取非操作;使用求解器查看是否有满足解,如果有,则为新的测试用例。简单了解 SMT 之后,我们尝试使用其中一种 SMT 求解器 z3 。大多数 SMT Solver都支持SMT-LIB。SMT-LIB其中一个目标便是促进SMT求解器采用通用语言。所以我们有必要了解下 SMT-LIB 标准。原创 2021-02-27 16:20:43 · 9152 阅读 · 1 评论 -
追踪信息流
crash并不是程序的存在bug的唯一标志。在本章中,我们将深入探索如何在Python中跟踪信息流,以及如何使用这些信息流来确定程序是否按预期运行。原创 2021-02-18 23:24:08 · 355 阅读 · 0 评论 -
概率语法的模糊测试
概率语法的模糊测试,设计、(实现)、应用。原创 2021-02-09 21:56:40 · 222 阅读 · 0 评论 -
LL语法分析简介
本文先简单介绍自顶向下的分析方法。我们会指出这种方法存在的两个个问题:左递归问题,回溯问题。针对左递归问题,可以通过文法的实用限制和扩充的 BNF 方法得到解决。针对回溯问题可以通过左提公共终结符和First集合来进行确定性选择,以避免回溯。同时介绍Follow集合,从而可以判断其下面的非终结符能否产生当前需要的终结符,以排除当前字符串出错的可能。另外,First 集和 Follow 集不能有交集,否则会带来不确定性。而LL(1)文法是满足上面三个条件(文法不存在左递归、没有回溯,相同非终结符的 F原创 2021-02-07 23:27:59 · 5894 阅读 · 0 评论 -
使用文法的模糊测试2
本文采用树状结构,存储语法树。树状结构,在语法树的生长过程中,相对于字符串匹配替换,更加高效。在语法树的不同生长时期,采用不同的扩展方式。语法树的生长初期,尽可能大范围的拓展节点,直到树中包含,至少min_nonterminals个非终结符。接着,语法树进入生长中期,使用随机的方式拓展节点。此阶段,最多包含max_nonterminals个非终结符。最后,语法树进入生长末期,在拓展的时候,尽可能小范围的拓展节点。这些策略,解决了无限循环和字符串的生成过程无法控制等问题。原创 2021-02-05 15:30:03 · 201 阅读 · 0 评论 -
graphviz的初次使用
首先介绍DOT语言。接着,演示使用plantuml和python这两个工具渲染DOT语言描述的图。(好像都是使用的graphviz)最后讲解下fuzzing book中使用DOT语言,图像化展示分析树的实现代码。本质:DOT语言描述图+渲染原创 2021-02-03 22:55:55 · 772 阅读 · 0 评论 -
使用文法的模糊测试
程序的有效输入集合称为语言。语言的范围从简单到复杂。之前,我们随机输入的字符串(语言),很容易用正则表达式生成。为了形式化的描述语言,这里我们使用文法。通过文法,生成语句(言),作为模糊测试的输入。本文使用python,实现一个BNF的算数表达式文法。并使用该文法生成测试用例。本文不包含(但Fuzzing with Grammars 大部分包含):文法的铁路图生成、EBNF、将EBNF转换成BNF(通过增加新的非终结符,先去括号,再去运算符)、给每个表达式添加参数、文法的合法性检查(开始符号不能出现原创 2021-02-01 23:21:01 · 498 阅读 · 0 评论 -
基于突变的模糊测试
模糊测试中随机生成的字符串大概率是无效的。这导致很多时间被浪费在无效的测试输入中。我们可以采用合法有效的输入进行初期的测试。这些有效的输入,我们称之为种子。我们对种子进行突变,将其中的bit(s)进行突变(翻转、删除、增加)。由于突变的部分相对于某个种子的整体,变化较小。那么突变之后的种子,也很可能是合法的。种子突变的越多,不合法的可能性越大。那么如何控制突变呢?这里引入基于覆盖率引导的模糊测试。当突变生成中输入可以发现新路径的时候,我们将该输入放入仓库中。其中,仓库使用种子进行初始化。这样,突原创 2021-01-30 19:49:13 · 1116 阅读 · 2 评论 -
UML图的使用
UML类图的简单使用原创 2021-01-30 10:47:04 · 571 阅读 · 0 评论 -
代码覆盖率简介
黑盒测试是功能性测试。白盒测试是结构测试。为了查看白盒测试过程中,哪些代码被测试(哪些代码没有被测试),在执行代码的时候进行跟踪。通过跟踪,我们可以知道代码的覆盖率详情。为此,本文实现了一个Coverage class 来记录代码执行过程中的覆盖率。本文在模糊测试中应用了代码覆盖率,发现随着测试次数的增加,覆盖率逐渐趋于一个最大值。这个覆盖率最大值和白盒测试的最覆盖率值接近,从而证明在本例中使用模糊测试可以取得和白盒测试等价的结果。原创 2020-12-12 16:36:57 · 2932 阅读 · 0 评论 -
模糊测试简介
介绍模糊测试起源;使用一个简单的事例演示模糊测试;实现一个超简单的模糊测试框架;原创 2020-12-08 19:43:57 · 1162 阅读 · 0 评论 -
软件测试简介
软件测试简介原创 2020-12-04 17:17:19 · 337 阅读 · 0 评论