一 概述
SQL注入是针对一种数据库而言的,而不是针对网页语言。在任何使用了数据库查询环境下都可能存在。常见的数据库包括:MySQL、Oracle、Db2等。针对不同的数据库系统使用的一些函数会有所不同,不过从测试是否存在SQL注入的角度考虑,只需要进行几个最基本的判断语句就可以了。
由于SQL注入有可能造成信息泄漏,在严重情况下(根据使用的数据库而定)甚至可能造成数据修改、删除,从而导致业务中断。因此必须发现所有存在的注入点
二 说明
1、页面或者URL可能接受多个参数,需对每个参数都进行测试
2、如果客户端script对输入数据进行合法行校验,阻止非法数据,可以通过抓包拦截的方法修改输入数据,绕过客户端数据校验。
3、POST、AJAX以及隐藏域提交参数也需要测试,方法是通过抓包工具拦截HTTP请求,找到提交的参数并参照下面的方法修改参数值
三 手工测试方法
搜索型参数
http://127.0.0.1/sql.php?Parameter=James #正常查询数据
http://127.0.0.1/sql.php?Parameter=James' #页面异常或数据查询为空
http://127.0.0.1/sql.php?Parameter=James’and‘%’=' #正常查询数据
http://127.0.0.1/sql.php?Parameter=James' and‘a%’='b #查询数据为空或提示列表为空
数字型参数
http://127.0.0.1/sql.php?Parameter=10001 #正常查询数据
http://127.0.0.1/sql.php?Parameter=10001' #页面异常或数据查询为空
http://127.0.0.1/sql.php?Parameter=10001 and 1=1 #正常查询数据
http://127.0.0.1/sql.php?Parameter=10001 and 1=2 #查询数据为空或提示列表为空
字符型参数
http://127.0.0.1/sql.php?Parameter=James #正常查询数据
http://127.0.0.1/sql.php?Parameter=James' #页面异常或数据查询为空
http://127.0.0.1/sql.php?Parameter=James’and‘1’=‘1 #正常查询数据
http://127.0.0.1/sql.php?Parameter=James' and‘1’=‘2 #查询数据为空或提示列表为空
手工测试举例
前置条件:
Web业务运行正常
已知待测目标URL,假设为GET http://test.pub.cn/api/v3/groups
待测目标存在参数输入,假设为groupid=45678 文章来源:https://www.toymoban.com/news/detail-720291.html
测试步骤:文章来源地址https://www.toymoban.com/news/detail-720291.html
到了这里,关于安全测试-SQL注入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!