模糊测试的方法、系统及存储介质转让专利

申请号 : CN202110580093.X

文献号 : CN113434386B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 万振华

申请人 : 深圳开源互联网安全技术有限公司

摘要 :

本发明提供了一种模糊测试方法、系统及存储介质,该方法包括如下步骤:根据第一集合数据,生成转译数据;其中,转译数据包括定位标识;根据转译数据的状态,针对转译数据进行规范处理,选取模糊测试的输入数据;将输入数据代入目标程序,获得目标程序的测试结果;应用定位标识及目标程序的测试结果,分析目标程序的状态。将输入数据代入目标程序之后,则可直接获得目标程序的测试结果,确定目标程序可以接收各种输入数据之后,所获得的结果,以此,高效、准确、快速地分析目标程序。

权利要求 :

1.一种模糊测试方法,用于通过第一集合数据,对目标程序进行模糊测试,其特征在于,所述方法包括如下步骤:随机生成至少一个模糊测试的种子,生成原始数据;其中,所述种子设有种子标号;对所述原始数据进行迭代,生成迭代数据;获取迭代序列号,对所述迭代数据进行标识,生成所述第一集合数据;其中,所述第一集合数据,包括第一定位标识及所述迭代数据;所述第一定位标识为显性token,所述第一定位标识包括:所述种子标号以及所述迭代序列号;

根据所述第一集合数据,生成转译数据;其中,所述转译数据包括定位标识;

根据所述转译数据的状态,解析转译数据,将转译数据的内容逻辑作为第二定位标识,选取所述模糊测试的输入数据;其中,所述第二定位标识为隐性token;

将所述输入数据代入所述目标程序,获得所述目标程序的测试结果;

应用所述定位标识及所述目标程序的测试结果,分析所述目标程序的状态。

2.如权利要求1所述的模糊测试方法,其特征在于,所述根据所述转译数据的状态,针对所述转译数据进行规范处理,选取所述模糊测试的输入数据,具体包括:获取所述转译数据的特定字段长度及加密方式并进行校验;

若所述转译数据的特定字段长度及加密方式均符合所述目标程序的预设规范,则将对应的所述转译数据作为所述模糊测试的输入数据。

3.如权利要求2所述的模糊测试方法,其特征在于,所述方法还包括:若所述转译数据的特定字段长度小于所述目标程序的预设长度,按照所述转译数据的类型,应用对应的预设填充字符,将对应的所述转译数据的特定字段进行填充处理;

将填充处理后的所述转译数据作为所述模糊测试的输入数据。

4.如权利要求2所述的模糊测试方法,其特征在于,所述方法还包括:将所述转译数据的特定字段与预设的修正模板进行对照;

按照所述转译数据的类型,应用对应的预设更改字符,将对应的所述转译数据进行替换处理;

将替换处理后的所述转译数据作为所述模糊测试的输入数据。

5.如权利要求1所述的模糊测试方法,其特征在于:所述第一定位标识,包括种子号及迭代序列号。

6.如权利要求1所述的模糊测试方法,其特征在于:所述方法基于go语言,用于测试多种语言脚本。

7.一种模糊测试系统,用于通过第一集合数据,对目标程序进行模糊测试,其特征在于,所述系统包括:生成模块,用于随机生成至少一个模糊测试的种子,生成原始数据;其中,所述种子设有种子标号;对所述原始数据进行迭代,生成迭代数据;获取迭代序列号,对所述迭代数据进行标识,生成所述第一集合数据;其中,所述第一集合数据,包括第一定位标识及所述迭代数据;所述第一定位标识为显性token,所述第一定位标识包括:所述种子标号以及所述迭代序列号;

转译模块,用于根据所述第一集合数据,生成转译数据;其中,所述转译数据包括定位标识;

规范模块,用于根据所述转译数据的状态,解析转译数据,将转译数据的内容逻辑作为第二定位标识,选取所述模糊测试的输入数据;其中,所述第二定位标识为隐性token;

测试模块,用于将所述输入数据代入所述目标程序,获得所述目标程序的测试结果;

回溯模块,用于应用所述定位标识及所述目标程序的测试结果,分析所述目标程序的状态。

8.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。

说明书 :

模糊测试的方法、系统及存储介质

技术领域

[0001] 本发明涉及软件安全测试的领域,尤其是指一种模糊测试的方法、系统及存储介质。

背景技术

[0002] 软件测试(Software Testing)是指,在规定的条件下对程序进行操作以发现程序错误,并对其是否能满足设计要求进行评估的过程。每一个新的软件总可能有完全不符合所有已知模式的新型安全性缺陷出现,在软件安全测试时,运用一组好的原则来避免不安全的软件上市、避免不安全软件受攻击,就显得十分重要。
[0003] 模糊测试是一种被广泛使用的软件安全性测试技术,用于发现软件(例如应用程序、协议实现体等)中的隐患,其基本原理是:向待测目标(例如运行有相关软件的服务器、PC等)发送大量的随机数,使得待测目标以非预期的方式运行,从而发现故障。
[0004] 现有的模糊测试,只通过单一的通道记录模糊测试的输入数据,而这些输入数据是难以把控的,可能会出现无法识别部分输入数据的情况,导致测试效率低下。

发明内容

[0005] 本发明所要解决的技术问题是:提供一种模糊测试的方法、系统及存储介质,用以高效地进行模糊测试。
[0006] 为了解决上述技术问题,本发明采用的技术方案为:本申请提供一种模糊测试方法,用于通过第一集合数据,对目标程序进行模糊测试,所述方法包括如下步骤:
[0007] 根据所述第一集合数据,生成转译数据;其中,所述转译数据包括定位标识;
[0008] 根据所述转译数据的状态,针对所述转译数据进行规范处理,选取所述模糊测试的输入数据;
[0009] 将所述输入数据代入所述目标程序,获得所述目标程序的测试结果;
[0010] 应用所述定位标识及所述目标程序的测试结果,分析所述目标程序的状态。
[0011] 其中,所述根据所述转译数据的状态,针对所述转译数据进行规范处理,选取所述模糊测试的输入数据,具体包括:
[0012] 获取所述转译数据的特定字段长度及加密方式并进行校验;
[0013] 若所述转译数据的特定字段长度及加密方式均符合所述目标程序的预设规范,则将对应的所述转译数据作为所述模糊测试的输入数据。
[0014] 进一步地,所述方法还包括:
[0015] 若所述转译数据的特定字段长度小于所述所述目标程序的预设长度,[0016] 按照所述转译数据的类型,应用对应的预设填充字符,将对应的所述转译数据的特定字段进行填充处理;
[0017] 将填充处理后的所述转译数据作为所述模糊测试的输入数据。
[0018] 可选地,所述方法还包括:
[0019] 将所述转译数据的特定字段与预设的修正模板进行对照;
[0020] 按照所述转译数据的类型,应用对应的预设更改字符,将对应的所述转译数据进行替换处理;
[0021] 将替换处理后的所述转译数据作为所述模糊测试的输入数据。
[0022] 其中,所述定位标识包括第一定位标识;所述根据所述第一集合数据,生成转译数据之前,还包括,生成第一集合数据的步骤,具体为:
[0023] 随机生成至少一个模糊测试的种子,生成原始数据;其中,所述种子设有所述种子标号;
[0024] 对所述原始数据进行迭代,生成迭代数据;
[0025] 获取迭代序列号,对所述迭代数据进行标识,生成所述第一集合数据;
[0026] 其中,所述第一集合数据,包括第一定位标识及所述迭代数据。
[0027] 其中,所述第一定位标识,包括种子号及迭代序列号。
[0028] 进一步地,所述定位标识包括第二定位标识,所述针对所述转译数据进行规范处理,选取所述模糊测试的输入数据,还包括:
[0029] 解析所述转译数据,将所述转译数据的内容逻辑,作为所述第二定位标识。
[0030] 其中,所述方法基于go语言,用于测试多种语言脚本。
[0031] 本申请第二方面提供一种模糊测试系统,用于通过第一集合数据,对目标程序进行模糊测试,所述系统包括:
[0032] 转译模块,用于根据所述第一集合数据,生成转译数据;其中,所述转译数据包括定位标识;
[0033] 规范模块,用于根据所述转译数据的状态,针对所述转译数据进行规范处理,选取所述模糊测试的输入数据;
[0034] 测试模块,用于将所述输入数据代入所述目标程序,获得所述目标程序的测试结果;
[0035] 回溯模块,用于应用所述定位标识及所述目标程序的测试结果,分析所述目标程序的状态。
[0036] 本申请的第三方面提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。
[0037] 本发明的有益效果在于:本发明的优势在于,在转译数据中设置定位标识,以追溯到第一集合数据中的具体数据,方便后期的维护处理,从而降低无效数据的在未来的产生概率。而根据所述转译数据的状态,进行规范处理,会将完全不符目标程序的转译数据清除掉,而留下规范的数据,以避免模糊测试过程中出现运行故障。而将所述输入数据代入所述目标程序之后,则可直接获得目标程序的测试结果,确定目标程序可以接收各种输入数据之后,所获得的结果,以此,高效、准确、快速地分析目标程序。

附图说明

[0038] 下面结合附图详述本发明的具体结构
[0039] 图1为本发明的第一实施例的模糊测试的整体流程图;
[0040] 图2为本发明的第二实施例中选取模糊测试的输入数据的流程图;
[0041] 图3为本发明的第三实施例中选取模糊测试的输入数据的流程图;
[0042] 图4为本发明的第四实施例中选取模糊测试的输入数据的流程图;
[0043] 图5为本发明的第五实施例中生成第一集合数据的流程图;
[0044] 图6为本发明的第六实施例中模糊测试系统的结构框图。

具体实施方式

[0045] 为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
[0046] 请参阅图1,本申请第一方面提供一种模糊测试方法,用于通过第一集合数据,对目标程序进行模糊测试,方法包括如下步骤:
[0047] 步骤S101、根据第一集合数据,生成转译数据;其中,转译数据包括定位标识;
[0048] 步骤S102、根据转译数据的状态,针对转译数据进行规范处理,选取模糊测试的输入数据;
[0049] 步骤S103、将输入数据代入目标程序,获得目标程序的测试结果;
[0050] 步骤S104、应用定位标识及目标程序的测试结果,分析目标程序的状态。
[0051] 本发明的优势在于,在转译数据中设置定位标识,以追溯到第一集合数据中的具体数据,方便后期的维护处理,从而降低无效数据的在未来的产生概率。而根据转译数据的状态,进行规范处理,会将完全不符目标程序的转译数据清除掉,而留下规范的数据,以避免模糊测试过程中出现运行故障。而将输入数据代入目标程序之后,则可直接获得目标程序的测试结果,确定目标程序可以接收各种输入数据之后,所获得的结果,以此,高效、准确、快速地分析目标程序。
[0052] 需要了解多少,本实施例中的目标程序,一般指第三方脚本程序,与原始数据之间可能使用不同语言。
[0053] 需要了解的是,本申请的技术方案实现了松耦合的效果,模糊测试所需的任意接口都是可替换的;并且,第一集合数据可通过C、JAVA、PHP、Go、Python等流行语言来进行调用,还可兼容各种语言的功能,以对特定的输入数据进行变异处理。
[0054] 更重要的是,将本申请的技术方案与go语言结合之后,而且模糊测试出现问题之后,还可以继续进行处理,当模糊测试告一段落之后,再通过对应的token追溯到模糊测试的原始数据。此外,将本申请的技术方案与特定的发包技术相结合后,可以同时针对多个对象进行模糊测试,且调试速度较快。
[0055] 请参阅图2,根据转译数据的状态,针对转译数据进行规范处理,选取模糊测试的输入数据,具体包括:
[0056] 步骤S200、获取转译数据的特定字段长度及加密方式并进行校验;
[0057] 步骤S201、若转译数据的特定字段长度及加密方式均符合目标程序的预设规范,则将对应的转译数据作为模糊测试的输入数据。
[0058] 需要了解的是,根据第一集合数据生成转译数据的过程中,存在不确定性,由此,就会导致转译数据中,存在一些信息是目标程序所无法识别的。在使用传统的技术方案来进行转译的过程中,一般只是针对数据内容进行的校验。然而,数据的内容变化繁多,很容易遇到错漏的情况。因此,在经过长时间的研究与实验之后,使用转译数据的特定字段长度及加密方式,相比于传统的数据识别,更可识别出转译数据的具体信息,并以此挑选出对应的输入数据。由此,具有高效、准确的优势,可以更好地测试出目标程序的运行状态。
[0059] 请参阅图3,根据转译数据的状态,针对转译数据进行规范处理,选取模糊测试的输入数据,还包括:
[0060] 步骤S300、若转译数据的特定字段长度小于目标程序的预设长度;
[0061] 步骤S301、按照转译数据的类型,应用对应的预设填充字符,将对应的转译数据的特定字段进行填充处理;
[0062] 步骤S302、将填充处理后的转译数据作为模糊测试的输入数据。
[0063] 一般来说,在数据转译的过程中,可能产生丢失数据的情况;而本技术方案是从转译数据状态的角度出发,也是因为如此,才可以直接应用对应的预设填充字符进行填充。
[0064] 需要了解的是,具有特定字段,且在转译过程中出现bug的转译数据,一般是对模糊测试所需要的重要数据,将这些数据保留下来,才能追溯到相应的原始数据,然后更容易检测出目标程序存在的问题。
[0065] 请参阅图4,根据转译数据的状态,针对转译数据进行规范处理,选取模糊测试的输入数据,还包括:
[0066] 步骤S401、将转译数据的特定字段与预设的修正模板进行对照;
[0067] 步骤S402、按照转译数据的类型,应用对应的预设更改字符,将对应的转译数据进行替换处理;
[0068] 步骤S403、将替换处理后的转译数据作为模糊测试的输入数据。
[0069] 本实施例中,主要针对转译数据的特定字段进行修正,由于在数据的特定字段出现错误之后,可能只是少数字符出现了bug。
[0070] 还需要了解的是,具有特定字段,且在转译过程中出现bug的转译数据,一般是对模糊测试所需要的重要数据,将这些数据保留下来,才能追溯到相应的原始数据,然后更容易检测出目标程序存在的问题。本技术方案中,通过制定预设的变更程序,来修正转译数据,以更精确地获取目标程序存在的问题。
[0071] 请参阅图5,定位标识包括第一定位标识;根据第一集合数据,生成转译数据之前,还包括,生成第一集合数据的步骤,具体为:
[0072] 步骤S501、随机生成至少一个模糊测试的种子,生成原始数据;其中,种子设有种子标号;
[0073] 步骤S502、对原始数据进行迭代,生成迭代数据;
[0074] 步骤S503、获取迭代序列号,对迭代数据进行标识,生成第一集合数据;
[0075] 其中,第一集合数据,包括第一定位标识及迭代数据。
[0076] 本方案中,相当于制定了显性的token,由此,形成了有迹可循的回溯轨迹。应用本实施例的技术方案,可以针对任意位置的数据进行选取、搜集,以更清晰地获取目标程序中的问题。
[0077] 具体的,第一定位标识,包括种子号及迭代序列号。
[0078] 需要了解的是,种子号表示进行模糊测试的种子,而迭代序列号是在种子号的基础上,生成的顺序号。在进行模糊测试、获得了模糊测试结果之后,可以先确定种子号,再确定迭代序列号,以此获得第一集合数据中,与模糊测试结果相对应的具体数据。且这一过程所需的计算力较少,计算速度较快,可以较为快捷地获取。
[0079] 具体的,定位标识包括第二定位标识,针对转译数据进行规范处理,选取模糊测试的输入数据,还包括:
[0080] 解析转译数据,将转译数据的内容逻辑,作为第二定位标识。
[0081] 由此,使用隐式token,在第一定位标识丢失,或者,并不存在第一定位标识的时候,也可以保持模糊测试的正常运行。
[0082] 需要了解的是,流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
[0083] 请参阅图6,本申请第二方面提供一种模糊测试系统,用于通过第一集合数据,对目标程序进行模糊测试,包括:
[0084] 转译模块,用于根据第一集合数据,生成转译数据;其中,转译数据包括定位标识;
[0085] 规范模块,用于根据转译数据的状态,针对转译数据进行规范处理,选取模糊测试的输入数据;
[0086] 测试模块,用于将输入数据代入目标程序,获得目标程序的测试结果;
[0087] 回溯模块,用于应用定位标识及目标程序的测试结果,分析目标程序的状态。
[0088] 进一步地,系统还包括:
[0089] 校验模块,用于获取转译数据的特定字段长度及加密方式并进行校验;
[0090] 校验模块,还用于若转译数据的特定字段长度及加密方式均符合目标程序的预设规范,则将对应的转译数据作为模糊测试的输入数据。
[0091] 上述各模块本质上是虚拟模块,承载了上述各实施例中的方法。上述各模块可以是任意实际产品组合而成的。
[0092] 本申请又一种终端,包括处理器、存储器和显示器,所述处理器耦接所述存储器、所述显示器,所述存储器上存储有可在所述处理器上执行的计算机程序;所述处理器执行所述计算机程序,实现上述的方法。
[0093] 本申请还一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现上述的方法中的步骤。
[0094] 上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
[0095] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到,上述实施例方法,可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器镜像(Read Only Memory image,ROM)/随机存取存储器(Random Access Memory,RAM)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0096] 应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合[0097] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。
[0098] 需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0099] 以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。