+ 首页>>技能>>实用技巧>>内容

技能让我们一同走进模糊测试的世界500+次围观

本篇文章将会带领我们进入到一个全新的测试领域—模糊测试

在主流字典中压根就找不到模糊测试(fuzzing test)这个术语,这个术语有很多别名,而且对一些读者来说可能是一个全新的词汇,在软件安全分析方面,目前模糊测试是一种令人激动的方法。

我们首先解释一下什么是模糊测试,模糊测试最早出现在wisconsin-madison大学的一个研究项目中,后来该术语被用来描述软件测试的一个方法体系。在学术界,与模糊测试最为接近的术语是边界值分析。边界值分析方法是一种黑盒测试方法,该方法根据应用的合法和非法输入区间,选择落在区间边界附近的值作为输入值来进行测试。边界值分析方法能够帮助确保应用的错误处理机制能准确的接受所有合法输入值,并能准确的过滤掉所有非法输入值。模糊测试与边界值分析方法很类似,不同的是,我们在使用模糊测试方法时,不仅仅只关注边界值,同时还会关心任何能够触发未定义或是不安全行为的输入。

模糊测试的定义

书本《模糊测试—强制发掘安全漏洞的利器》中将模糊测试定义为“通过向应用提供非预期的输入并监控输出中的异常来发现软件中的故障的方法”。
用于模糊测试的模糊测试器(fuzzer)分为两类:一类是基于变异的模糊测试器,这一类测试器通过对已有的数据样本进行变异来创建测试用例;而另一类是基于生成的模糊测试器,该类测试器被为被测系统使用的协议或是文件格式建模,基于模型生成输入并据此创建测试用例。

一个形象的例子来解释模糊测试

如果你是一个模糊测试的新手,可以将模糊测试类比成如何闯进一所房子。假设你不幸丢了工作,不得不以犯罪为生,现在你想要破门进入一所房子。如果采用纯白盒测试的方法,你需要在破门前得到房子的所有相关信息,包括房子的蓝图,房子的锁的生产厂家、房子的建筑材料等。显然,白盒测试放在这种情况下有独特的好处,但也并非万无一失。应用白盒测试方法,你需要对房子进行静态分析而不是进行运行时检查。例如,通过静态分析你发现这所房子的卧室的侧面窗户有一个漏洞,可以把窗户打碎进入房子。但你肯定没办法预见到你进入后的事情,也许当你进入以后发现愤怒的房主正在屋里拿枪等着你。另外,你可以采用黑盒测试方法来进入这所房子。采用黑盒测试方法,你可以在黑暗的掩护下接近房子,悄悄测试所有的门和窗户,向房子窥视一决定最好的突破口。但是。。。如果你最终选择使用模糊测试方法进入这所房子,你可以既不用研究房子的蓝图、也不用手工尝试所有那些锁,只需要选择一种武器并让进入房子的过程完全自动化——这就是强制安全漏洞发现方法的威力!!

一个简单的http模糊测试案例

 array('pipe', 'r'),
	   1 => array('pipe', 'w'),
	   2 => array('pipe', 'w')
	);

	$cmd = $_SERVER['_'];
	$process = proc_open($cmd, $fdspec, $pipes, '/tmp');

	if (is_resource($process)) {
		fwrite($pipes[0], $src);
		fclose($pipes[0]);

		// stdout
		if ($err = stream_get_contents($pipes[1])) {
		//	var_dump($err);
		}

		// stderr
		if ($err = stream_get_contents($pipes[2])) {
		//	var_dump($err);
		}

		return proc_close($process);
	}
}

foreach ($protocols as $protocol) {
	printf("- Protocol: %s\n", $protocol);

	foreach ($versions as $version) {
		foreach ($uris as $uri) {	
			foreach ($headers as $header) {
				foreach ($values as $value) {
					printf("Testing '%s'\n", $header);
					printf("Value '%s'\n", substr($value, 0, 30));
					printf("URI '%s'\n", substr($uri, 0, 30));
					printf("Version: '%s'\n", $version);
					printf("Header '%s'\n", $header);

					$source = '';

					$source .= '

最后再次强烈推荐书本《模糊测试—强制发掘安全漏洞的利器》

http://www.diggerplus.org/archives/2247

+ 猜你喜欢...

===== 关于 DiggerPlus =====
DiggerPlus是国内新锐测试人垂直内容博客,专注于挖掘测试工具,普及测试技术,专注于测试人能力提升,博客上线后就受到广大测试人的热烈追捧;此外,DiggerPlus深度整合评测资源,揭秘科技数据和真相,让读者更懂科技,更好地把玩科技。 我们始终保持"独立,客观,严谨,优秀"的优良作风,努力为读者带来源源不断的优质内容。想访问更多酷毙的测试人网站?赶紧来DiggerPlus测试人网址导航看看吧!

===== DiggerPlus Team =====
DiggerPlus Team是DiggerPlus官方发起的团队,这是一群热爱科技,热爱测试,喜欢深度挖掘的热血测试人,他们是评测师,测试专家。 我们欢迎优秀的测试人加入DiggerPlus Team。 加入DiggerPlus,可以成为我们的认证Dper,认证Dper拥有DiggerPlus独一无二的专栏并得到个人展示。

===== DiggerPlus 官方读者群 =====
DiggerPlus官方读者群(一)

+ 关于本文作者

我也很想让世界变得更美好,可是上帝却不开放源代码。

的专栏 | 专栏作者 | 访问Kiven的主页

+ 已有2个评论

Copyright © 2014 DiggerPlus. 71 queries in 0.742 seconds.
使用合作网站账号快速登录,更多精彩等着您: 开源中国