鲁迅先生曾经说过:做安全,先免责!
用户在使用本文信息时,应自行承担风险。本文不对用户因使用本文信息而导致的任何直接或间接损失承担责任。
本文主要内容:过滤与绕过、注释符的过滤绕过方法、and与or的过滤绕过方法。
简介
过滤:在前面的注入中,自己构造恶意的SQL语句,从而获取数据库中的数据。在构造的恶意SQL语句中,包含了注释符、union、and、or等内容。如果在程序的源代码中,通过某些方法实现禁止使用这些内容,则称为过滤。
简单讲:使一些敏感的内容无法生效
绕过:网站源程序禁止使用注释符、union、and、or等内容,就需要攻击者想办法越过那些过滤,使过滤失效的过程称为绕过。
简单讲:逃脱网站的一些限制,使敏感内容生效
1. 注释符过滤绕过
假如注释符被禁止使用,该如何处理,从而保证注入语句的正确执行
简介
注释符作用:注释掉后面不需要的语句
前面的案例中均有使用到注释符,用于将正常SQL语句中多余的部分进行注释,从而保证注入语句的正确执行。
常用的注释符
常见的注释符:--+、--、#、%23(#的URL编码)
案例演示
靶场第23节


问题分析
参数:?id=1,页面正常显示数据

参数:?id=1',页面显示错误信息,从错误信息中可看出本节使用了单引号闭合方式(如果不能理解为什么是单引号闭合,建议复习前面的文章)

参数:?id=1' --+或?id=1' #,页面依旧报错。可以推测出应该是将注释符进行了过滤操作。

源码分析
在网站根目录下找到第23节的源代码进行查看。

在源代码的第20-27行,可以看到,程序对用户输入的id进行字符串替换操作。
如果id中存在字符串--或#,则使用preg_replace()函数将其替换为""(即空串)

从源代码中可以看出,本节已经不能再使用注释符#或--了。
绕过方法
第23节源代码中的sql语句

在前面的章节,我们使用的是1' --+,放到源代码中则变为:id = '1' --+' LIMIT,因为有注释符,所有后面的'无效了。
因为第23节过滤了单引号,因此可以使用多加一个单引号实现闭合效果的方法进行绕过,即输入:1'',则源代码变为:id = '1''',从而变为两对单引号进而实现绕过效果。
![[Pasted image 20250207160507.png]]
简单讲:输入
1'之后,原来的SQL语句中多出一个',因此多输入一个单引号(即1''),与多出来的单引号组成一对
查询数据库名称
参数:?id=-1' union select 1,2,database() '

也可以使用and或or,参数:?id=-1' union select 1,database() ,3 and '1'='1
and '1' = '1中少了一个单引号,为了实现与源码中多余的单引号闭合

其他闭合
""闭合
?id=1" "?id=-1" union select 1,2,database() "?id=-1" union select 1,database(),3 or "1"="1
('')闭合?id=1') ('?id=-1') union select 1,2,database() ('?id=-1') union select 1,database(),3 or ('1')=('1
("")闭合?id=1") ("?id=-1") union select 1,2,database() ("?id=-1") union select 1,database(),3 or ("1")=("1
其他情况
数字型不需要闭合,因此可以不用考虑注释符号问题
2. and与or过滤绕过
在构造注入语句时,会用到and或or,如果被过滤掉,便无法使用。
案例演示
使用靶场第25节

源代码分析
源码中/or/i和/AND/i表示:/i的含义为无论是大写还是小写,均转化为小写,然后preg_repleace()函数将转化为小写后的and或or替换为""

绕过手法
- 大小写绕过:
aND、AnD、Or、ANd、oR等 - 复写过滤字符:
aandnd、anandd、oorr等- 把中间的
and替换为""(空串),则留下外面的and
- 把中间的
- 用
&&取代and、用||取代or- 也可以使用
&的URL编码%26,|的URL编码%7C
- 也可以使用
靶场实验
参数:?id=1' and 1=1 --+,由于and被过滤掉了,因此页面报错

参数:?id=1' anandd 1=1 --+,使用复写绕过and过滤。页面正常显示数据

参数:?id=1' %26%26 1=1 --+,使用&&的URL编码替代and实现绕过。页面正常显示数据。

无情的广告时间
哈哈哈哈,又到了大家喜欢的广告时间了,公众号:编码魔坊,喜欢的话给个关注呗,点击下方小卡片,扫码即可关注,谢谢您的关注!!!
669

被折叠的 条评论
为什么被折叠?



