关闭

如何攻击软件

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

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

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

  3. 输入顺序的攻击
  软件的输入形成了一种正式的语言。单独的输入构成了该语言的字母表,输入字符串组成了该语言的句子。一些这样的句子应当通过接口启用和禁用控制来阻止其产生,输入域和这种行为可以通过应用大量的输入字符串和所有可能的输入顺序来测试其正确性。
  选择可以迫使生成错误输出的输入字符串。
  这是一个很好的鉴定有问题输入序列的策略,和上面提到的用来发现有问题的输入组合的策略有异曲同工之处。例如:当我们注意到Office 2000中存在消失文本的错误时,我们制定了一个针对PowerPoint幻灯片标题文本框的攻击。下面一系列的截图演示了一个详细的由输入序列引起的文本消失的过程。

  

  

  

  有趣的是,请注意,刚才旋转了180度的文本框没有显示错误。一是必须按照描述的旋转命令顺序执行:旋转10度(或更多),其次是180度。二是撤销运行的序列,或者没有纠正错误的序列,每次单击一下标题外的区域,这样标题文本将消失。
  输入序列之所以可以作为胖缺陷攻击策略,是因为很多操作可以成功完成,但是遗留下来了一些能导致将来执行错误的负效应。全面彻底的输入序列探查可以使很多同类型的问题暴露出来。有时,输入序列变量的数量的多少并不能发生显著的变化,以用来发现接下来将要描述的攻击所能找到的缺陷。
  多次重复输入相同的输入数据或者输入序列。
  这将包括大量资源造成的影响以及要强调一个应用程序存储数据的空间,而不用暴露不良的负效应。不幸的是,大多数应用程序没有意识到自身空间和时间的局限,很多程序开发人员习惯于假设有充足的资源可用。
  在Word里可以找到这样的例子,Word里的等式编辑器看起来并没有意识到它只能处理10层嵌套的括号。
  二、 数据攻击
  数据是软件的生命线。如果你的数据管理混乱,软件将最终不得不使用坏的数据,而接下来将要发生的就不是什么好事了。所以了解如何以及在什么地方建立数据值是有意义的。
  实质上,数据的存储要么通过读取输入值将其储存在内部,要么储存一些内部计算的结果。所以可以通过提供输入和被动计算,我们能使数据流经被测试的应用。基于这种方式的数据攻击概述如下。

数据攻击

1、变量值攻击

迫使错误输入的数据被储存

迫使数据值超过所允许的范围

2、数据元素规模攻击

溢出输入缓存

迫使过量的数值被存储

迫使太少量的数值被存储

3、数据访问攻击

找到替代的方法来修改相同的数据

  1. 变量攻击
  这种类型的攻击需要研究数据类型,以及与内部存储的数据对象有关的所允许的数值。如果能访问到资源则这方面的信息就是现成的。然而,暗含类型的信息可以通过一个小的探测性测试来确定,这时要注意提示的错误信息。
  通过输入域中不同数据类型的使用找到类型匹配错误。
  在程序期望得到整型值的地方输入字符(或者相似的攻击),这是种早已被证明富有成果的攻击方法。但是我们发现该类型的攻击没有前面提到的攻击方法有效,这时因为现代程序语言放松了对类型检查和类型转换的处理。
  试图超出数据值所允许的范围。
  存储的变量数据就像输入的变量数据一样,也是攻击的对象。

  2. 数据元素规模攻击
  第二种类型的数据攻击,目标是上溢和下溢数据结构。换句话说,该攻击企图找到违背预定数据对象规模限制的数据。
  第一种该类型攻击的方法是缓冲区溢出。
  试图溢出输入缓冲。
  这里是指输入长字符串来溢出输入缓冲。该方法是黑客的最爱,因为有时候当一个应用程序销毁后它仍然可以一直执行一个进程。如果黑客在输入的长字符串尾部附加一个可执行字符串,则进程就可能执行该附加字符串。
  在Word 2000里就有一个可以利用的缓冲区溢出缺陷。这个缺陷在查找/替代功能里,如下图所示。

  

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号