如何攻击软件

发表于:2008-8-07 13:50

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:译者:贾国莹    来源:51Testing投稿

  有时候强迫建立默认值需要对以前的初始值进行变化,然后变成错误的设置。这种黑盒到黑盒的改变,可以保证一旦默认值变成其它的非法数据时能够被重建。

  为变量输入探索所有的字符集。
  有些输入值是要慎重考虑的,特别是当你对待一些特殊字符如$,%,#,引号,以及其它在很多程序语言中代表特殊含义的字符,在作为输入时经常要特殊处理。如果开发人员错误的应用了特殊字符,这些错误的输入很可能引起程序出错。
  通过用少量的输入值代替大规模的输入值的方法,迫使输出值规模发生变化,反之亦然。
  着眼于处理输出值的一种使用技术少获得回报大的寻找错误的方法。该方法考虑一个输出或者标示缺陷的行为,然后试图追踪能迫使这种行为发生的输入。按照这种思路有一种常用的攻击,它通过改变输入字符串和输出字符串的长度来迫使输出区域重新计算。
  一个好的理论例子是设置一个时钟,从9:59,观察它滚动到10:00。在第一轮其显示区域是4个字符长,第二轮其显示区域是5个字符长。通过另外一种方法,我们建立12:59(5个字符长),然后观察文本缩小到1:00(4个字符长)。开发人员往往编写的代码是通过初始的空白显示区域来运行,结果当显示区域已经有数据,而用不同规模大小的新数据来代替已有数据时常常发生错误。
  例如:PowerPoint中的“WordArt”,也就是艺术字存在一个有趣的问题。假设我们输入一个字符串,如下图所示:

  

  

  请注意整个字符串因为太长并不能全部显示出来。但实际上这并不是主要的问题。当按下“OK”按钮后会发生两件事情。第一件是计算出需要的常规输出域的大小以及我们输入文本的大小。现在让我们编辑字符串,并用一个单一字符代替它。

  

  请注意显示区域仍然没有改变,尽管我们只输入了一个字符而且字体大小没有改变。我们进行下一步工作。如果我们再次编辑这个字符串,键入一个多行字符串,那么输出将更有趣。
  我认为这点已经讲明白了,可以开始下一条攻击了。
  确保你探索了显示区域的边界。
  这是基于输出的另外一种攻击,和前一种攻击类似。然而,我们并不是要想办法使显示区域内出错,而是要将注意力集中在显示区域外部。这一次我们将不再需要重新计算显示边界而仅仅使其溢出。
  再来看前面提到过的PowerPoint的那个例子,我们可以画一个文本框,用一个上标字符串填充它。
  调整上标文字为大号字体,使得文字顶部突出被截断。
  这个功能要论证的问题与下面将要研究的相关问题存在关联。
  试图迫使引起刷屏错误。
  这个问题是现代图形界面用户所面临的最主要问题。甚至也是开发人员所面临的最大问题:如果刷新太频繁将使应用程序运行变慢,错误的刷新可以引起任何可能的错误,从监视器问题(需要用户强迫刷新)到主要的缺陷的发生(即阻止用户完成工作)。
通常所讲的寻找刷新问题是指在屏幕周围增加,删除,移动对象。这将引起背景对象重新显示,并且如果它无法及时地、正确地显示,就表示你找到了典型的刷新缺陷。将一个对象从初始位置进行移动,并调整移动的距离,是个很不错的想法。将对象先移动一点儿距离,然后再多移动一些距离;或者先将对象移动到一倍或两倍的距离,然后再将其移动到十多倍的距离上。
  继续我们上面用到的那个大字号上标文字的例子,试着每次将其在屏幕周围移动一点儿。请注意如下图所示的糟糕的刷新问题。
  

  另一个要指出的Office 2000中与屏幕刷新相关的问题是消失的文本。 在Word中最恼人的就是页边距的问题。
  2. 输入组合攻击
  第二种类型的输入/输出缺陷是处理多输入数据时的情况,这些输入可以一起执行或者一个个执行。例如:一个API函数要调用两个函数,一个参数值的选择基于另一个参数值的选择。这种情况往往是数值的组合,而且由于代码的复杂逻辑关系,易造成编程错误。
找到不能并存的组合输入值。
  哪些组合输入值是有问题的呢?这仍然是我们积极探索的一个重要问题。但是目前我们已经找到了一种方法,它对于决定你想要得到的一个输出尤其有效,而且可以通过该方法寻找引起输出错误的输入组合。
  设法使目标应用程序产生无效的输出。
  对于确实了解错误区域的测试人员来说,该方法是一种十分有效的攻击手段。例如:如果你要测试一个计算器应用程序,知道其中一些函数对它们的结果有限制范围,则想办法寻找组合的输入值来验证这些结果是一种有意义的尝试。
  有时窗口自身也能够为你提供线索来说明哪些输入值是相互关联的。在这种情况下,测试人员可以通过试验数据的范围来尝试违反已知的关系,以获得有价值的线索。

42/4<1234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号