安全测试之SQL注入

一、SQL注入的概念

SQL注入其实是恶意攻击者,将SQL或者字符作为参数输入,服务器在验证这个字段的时候,读取攻击者输入的数据,将其作为正常的值参与SQL语句的查询,从而达到删表或者获取数据库信息等目的。

二、SQL注入的条件

参数中含有SQL语句,并可以带入数据库正常执行;
WEB应用和数据库交互时,必须携带参数传递至数据库;
例如:
POST请求体中的参数
GET请求头URL中的参数
Cookie

三、SQL注入的几种场景

1、字符串型注入
在这里插入图片描述

场景1:假设登陆后台的校验逻辑为:从数据库查询对应用户名和密码,存在返回值验证通过。这种情况在用户名输入框输入OR 1 = 1 OR '1' = '1',密码为空,则猜测可构造如下SQL语句绕过后台校验登录系统:

SELECT * FROM usertable WHERE username = '' OR 1 = 1 OR '1' = '1' AND password = ''

场景2:也可以用户名为空,在密码输入框输入’ OR ‘1’ = '1,则猜测可构造如下SQL语句绕过后台校验登录系统:

SELECT * FROM usertable WHERE username = '' AND password = '' OR '1' = '1'

场景3:假设登录页面后台校验机制为:从数据库查询对应用户名和密码,存在一条返回值验证通过。这种情况在用户名输入框输入username’ AND 1 = 1 OR ‘1’ = '1,密码为空,则猜测可构造如下SQL语句绕过后台校验登录系统:

SELECT * FROM usertable WHERE username = 'username' AND 1 = 1 OR '1' = '1' AND password = ''

username如果未知,可以尝试使用admin、Admin、administrator、Administrator等进行猜测

2、数字型注入
在这里插入图片描述
数字型注入与字符串型注入很像,只不过不需要带引号’’,用上面的场景3举其中一个例子:

SELECT * FROM usertable WHERE username = 'username' AND 1 = 1 OR 1 = 1 AND password = ''

3、终止式注入
在这里插入图片描述
注: ;代表结束上一条语句,-- 代表注释后面的语句

场景1:假设登录页面后台校验机制为:从数据库查询对应用户名和密码,存在返回值验证通过。这种情况在用户名输入框输入’ OR 1 = 1;-- ,密码为空,则猜测可构造如下SQL语句绕过后台校验登录系统:

SELECT * FROM usertable WHERE username = '' OR 1 = 1;-- ' AND password = ''

场景2:假设登录页面后台校验机制为:从数据库查询对应用户名和密码,存在一条返回值验证通过。这种情况在用户名输入框输入username’;-- ,密码为空,则猜测可构造如下SQL语句绕过后台校验登录系统:

SELECT * FROM usertable WHERE username = 'username';-- ' AND password = ''
SELECT * FROM usertable WHERE username = '' OR 1 = 1 LIMIT 1;-- ' AND password = ''

如果应用过滤掉了单行注释字符:- -,可以用多行注释字符来代替:

SELECT * FROM usertable WHERE username = 'username'/*' AND password ='' '*/
四、SQL注入的几种测试工具

sqlmap是一款Python编写的免费SQL注入测试工具。全面支持6种SQL注入技术:基于布尔盲注、基于时间盲注、错误注入、基于查询的UNION注入、堆叠查询和带外。(以后具体详细介绍)

五、SQL注入的防范

测试角度:
例如对一个表单需求进行检查时,我们一般检验以下几项安全性问题:需求中应说明表单中某一field的类型,长度,以及取值范围(主要作用就是禁止输入敏感字符);需求中应说明如果超出表单规定的类型,长度,以及取值范围的,应用程序应给出不包含任何代码或数据库信息的错误提示等。
开发角度:
(1) 转义敏感字符及字符串
SQL的敏感字符包括:
“exec”, “xp_”, “sp_”, “declare”, “cmd”, “Union”, “+”, “//”, ”…”, “;”, “’”, “–”, “%”, “0x”, “><=!-*/()|” ,和空格。
(2) 屏蔽出错信息:阻止攻击者知道攻击的结果

猜你喜欢

转载自blog.csdn.net/weixin_40966030/article/details/107340868