一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就来谈谈关于软件测试中的“输入数据测试”。
对于客户端输入的数据,不能仅仅通过客户端的脚本进行合法性检验,还必须在服务器中对输入的数据进行检验,这样才能真正确保输入数据的合法性。如果仅仅通过客户端的脚本进行检验,是无法起到安全作用的,很容易使用HTTP 代码绕过检验。
测试主要包括以下内容:
SQL 注入测试。
MML 语法注入测试。
命令执行测试。
(1)SQL 注入测试。
SQL 注入测试主要是针对数据库安全性检验的测试,并不是针对网页代码安全性检验进行测试。这种情况在任何数据库查询环境下都可能存在,常见的数据库包括Oracle、MSSQL、Infomix、DB2、Sybase 等,针对不同的数据库系统,使用的函数有所不同,但从测试的角度来说,一般只需要判断几个最基本的语句即可。SQL 注入测试分为手工注入和自动化注入两种。
1)手工SQL 注入测试步骤如下(http://192.168.1.9/page.xxx?name=value):
步骤1:确定value 值的类型,如果该值为数字型,即进行步骤2 操作,否则进行步骤4 操作。
步骤2: 在被测参数后加上测试语句“ and 1=1 ”, 在地址栏中输入http://192.168.1.9/page.xxx?name=value and 1=1,观察返回的结果。如果能正确地访问该页面,那么进行下一步操作,否则直接进行步骤4 操作。
步骤3: 在被测参数后加上测试语句“ and 2=3 ”, 在地址栏中输入http://192.168.1.9/page.xxx?name=value and 2=3,观察返回的结果。如果能正确地访问该页面,那么进行下一步操作,否则该参数存在注入漏洞,测试完成。
步骤4: 在被测参数后加上测试语句“'and '1'='1' ”,在地址栏中输入http://192.168.1.9/page.xxx?name=value 'and '1'='1',观察返回的结果。如果能正确地访问该页面,那么进行下一步操作,否则该参数存在注入漏洞,测试完成。
步骤5: 在被测参数后加上测试语句“'and '2'='3' ”,在地址栏中输入http://192.168.1.9/page.xxx?name=value 'and '2'='3',观察返回的结果。如果能正确地访问该页面,说明该参数不存在漏洞,否则该参数存在注入漏洞,测试完成。
注意:如果存在多个参数,那么需要对每个参数都进行测试。
2)使用自动化工具也可对SQL 注入进行测试,常用工具为pangolin,测试步骤如下:
步骤1:运行pangolin 工具。
步骤2:在URL 中输入待测试的URL(如http://192.168.1.9/page.xxx?name=value)。
步骤3:单击Check 按钮,执行扫描操作。
(2)MML 语法注入测试。
MML(Man-Machine Language,人机语言)实现了人机对话,人机对话是计算机的一种工作方式,多用于电信行业,计算机用户与计算机之间通过控制台或终端显示屏幕,以对话方式进行工作。
MML 语法也可能存在注入漏洞,MML 语句通过分号(;)可以执行多语句,如命令“DSP CELL:DSPT=BYCELL, CELLID=1111;”,在缺少对输入参数进行严格控制的情况下,攻击者能够执行任意的MML 语句。但是由于在预期结果方面无法给出准确的判断规则,所以测试时无法给出详细的、具体的测试步骤,一般分为以下几步进行测试:
步骤1:找出提交给MML 处理的参数。
步骤2:在参数后面加入分号(;),提交请求。
步骤3:观察返回结果。
如果结果返回正常,可能就存在该漏洞。但是有一种特殊情况需要注意,如果参数并不是MML执行语句的参数值,结果也可能是正确的,此时就需要测试工程师再进行判断。
(3)命令执行测试。
有些页面可以接受类似于文件名的参数用于下载或者显示内容,测试时可以将参数替换成命令进行测试,观察返回的测试结果。
假设测试的URL 为http://192.168.1.9/test.jsp,可接受参数,并且接受的参数可以是类似于系统命令的字符(如cmd、ls 等)。
如net user 命令输出如下内容:
假设测试URL 为http://192.168.1.9/net user,观察返回的信息,返回的信息中不包括类似于系统命令返回的信息。
今天关于“输入数据测试”的内容就给大家讲解到这里,希望对做这些工作的小伙伴有帮助~欢迎大家每天和我一起学习更多涨薪技能哦。