SQL注入绕waf姿势:sleep被过滤了怎么办?

2025-04-14 8 0

引言

读过上篇的朋友应该知道,我们使用了and和or的变种以及特性成功的绕过了WAF,并且有了两种姿势可以用来探测SQL注入点,但是有朋友会发现,上篇的内容都是建立在”有回显“的前提下的,那么这一章节主要讲的就是利用时间函数,延时注入来探测无回显的SQL注入点~

需要准备的环境

1. sql-labs靶场

2. 安全狗WAF

3. 思考的思维(嘿嘿)

为什么写?

因为写,想写,写的详细,让大家都能徒手绕waf。见一个绕一个!哈哈

时间注入这个地方的知识点其实非常非常的多,所以这个章节就主要的让大家学会如何构造新的时间注入函数,理解迪卡尔积和锁这两者是如何替代时间注入的。掰开心、掏出心、心连心,将我理解的东西细致的,掰开的,全部的,让各位师傅学会,让各位师傅成为绕waf的大手子。

但关于锁的部分,在本章节只是略微的提起,因为这个东西特别难讲,所以会单独开一章节时间锁的绕过~

系列大饼

我打算从绕SQL注入点为开始,绕时间注入,绕注入数据库,绕注入数据库实际数据一一的写过去,让所有人都能学会绕WAF(嘿嘿,不一定实现),因为之前写过一篇绕IF过滤的,感觉其实并不好,看完以后有人反馈学不到啥,所以我以后的文章都会实战结合~

你能获得什么

1.得到sleep()函数的绕waf的变体

2.得到关于如何构造时间函数的思路

3.学会了笛卡尔积的基本原理

4.学会了锁的基本原理

5.每个payload绝对真实可用,每个payload都配合截图存在,不用担心是烂文垃圾文~

6.至少获取五个绕WAF的payload语句

7.每个涉及的函数掰开揉碎的讲解

正式开始

知识点一:SLEEP()函数

sleep函数大家都很熟悉了,那么直接讲它的基础触发逻辑​​

SLEEP(N) 的触发取决于查询​​实际返回的行数​​:

当查询结果包含 M 行时,SLEEP(N) 会对​​每行数据执行一次​​,总延迟时间为 M*N 秒。

若查询无结果(如 WHERE 条件不满足),则 SLEEP(N) 不会触发,总执行时间接近 0 秒。

什么意思呢?给大家看一个例子:

SQL注入绕waf姿势:sleep被过滤了怎么办?插图

首先看看emails表中有什么数据,一共八行数据

然后我们想查询id=1的数据

SELECT * FROM `emails` WHERE id=1

SQL注入绕waf姿势:sleep被过滤了怎么办?插图1

这个不难理解吧,那加上sleep函数

SQL注入绕waf姿势:sleep被过滤了怎么办?插图2

为什么返回了一秒?因为有一行数据,符合条件,也就是触发取决于查询​​实际返回的行数​​。

那么我们查询id0的情况呢?

SQL注入绕waf姿势:sleep被过滤了怎么办?插图3

没有匹配,所以没有花费时间。

那么直接SELECT sleep(1) FROM `emails` 呢?

SQL注入绕waf姿势:sleep被过滤了怎么办?插图4

就会超时,因为表中有多少行就会触发多少次延迟,最终导致响应超时~(当然这里只是这么理解,具体原因如果说8秒就超时响应肯定是不严谨的,有兴趣可以深究其机制~)

那么这个有什么用呢?

有的有的,还记得上一章的逻辑OR SLEEP(5)的逻辑吗?

有的有的,还记得上一章的逻辑OR SLEEP(5)的逻辑吗?

SELECT * FROM users WHERE id = '1' AND SLEEP(5); 触发了一次5秒

SELECT * FROM users WHERE id = '1' OR SLEEP(5); 有多少行触发了多少次5秒

这两个逻辑是有差别的。

OR SLEEP(5); --> 有多少行触发了多少次sleep(1) --> 是因为使用OR,会对表中的每一行进行检查,从而导致了检查一行,执行一次延迟

SELECT sleep(1) FROM `emails` --> 有多少行触发了多少次sleep(1) --> 则是因为了满足了查询条件从而造成的多次延时

逻辑概念不要混淆了~

大致理解了sleep函数,我们就可以进行,注释符号绕过

注释符号

相信大家最常见的注释符号绕过的姿势是这两种:

/**/ --> 代替空格

SQL注入绕waf姿势:sleep被过滤了怎么办?插图5

/*!50530 SELECT * FROM users */--> /*! SELECT * FROM users */--> 可执行注释

SQL注入绕waf姿势:sleep被过滤了怎么办?插图6

SQL注入绕waf姿势:sleep被过滤了怎么办?插图7

这里其实就有一个点值得注意了:如果你使用第一种方式,你在MYSQL后台是复现不出来的,例如:

SQL注入绕waf姿势:sleep被过滤了怎么办?插图8

会忽略掉这个空格。至于原因,我也不清楚~,大家注意点就好。

然后我们来讲解一下注释~

类型

语法

特点

适用场景

单行注释

(--)

-- 注释内容

需空格或控制符 行尾简短说明

单行注释

(#)

#注释内容

无需空格 快速注释或调试

多行注释

/* */

注释内容

跨行、不可嵌套 复杂逻辑解释

可执行注释

/*!版本号 ... */

版本条件执行

版本兼容性控制

一共有四种类型,什么叫单行注释:

可能有人对这个东西没有一个概念,我举个好玩的例子

SQL注入绕waf姿势:sleep被过滤了怎么办?插图9

发现报错的点了嘛?1111,没有2222

SQL注入绕waf姿势:sleep被过滤了怎么办?插图10

诶,我移动过去以后,为什么又只有21111,这21111为什么没有被注释掉?%0a是一个换行符。

我们拆分一下这个场景

SQL注入绕waf姿势:sleep被过滤了怎么办?插图11

看到了嘛?%0a就代替了这个换行~,好玩吧,现在理解单行注释是什么了吧~

SQL注入绕waf姿势:sleep被过滤了怎么办?插图12

多行注释当然没有这个烦恼啦~

其他的注释就是顾名思义啦,也就不多说。

而我们要学习绕waf用的其实就只有两个机制:

1. /* 和 */ 之间的​​绝大多数字符​​(包括特殊符号、字母、数字、空格、换行符等)均会被 MySQL 解析器忽略。

2. MySQL 的解析器对非关键字符(如无效注释符号)具备 ​​容错性​​,会自动跳过不影响语法结构的冗余符号

第一个机制什么意思?那就可有意思了~

SQL注入绕waf姿势:sleep被过滤了怎么办?插图13

SQL注入绕waf姿势:sleep被过滤了怎么办?插图14

深刻不深刻,好不好理解~

你想在/*xxx*/xxxfuzz什么字符就fuzz什么字符,随便fuzz随便写~(当然可能有些字符不行)

例如:

SQL注入绕waf姿势:sleep被过滤了怎么办?插图15

诶两个/*/*没问题,那么三个呢?/*/*/*

SQL注入绕waf姿势:sleep被过滤了怎么办?插图16

为什么?记得注释是什么开启,什么结束嘛?/*开启,*/结束

分析这个报错语句/*/*/是不是完成了一次注释闭合,剩下的就是:*dasdlk--))($%@kanxc123zc><*/and 1=2

少了什么?少了一个/

所以:/*/*//*dasdlk--))($%@kanxc123zc><*/and 1=2

SQL注入绕waf姿势:sleep被过滤了怎么办?插图17

正常执行。好玩吧

第二个机制会自动跳过不影响语法结构的冗余符号

什么意思?很简单的啦~,例如:

SQL注入绕waf姿势:sleep被过滤了怎么办?插图18

可以这样

SQL注入绕waf姿势:sleep被过滤了怎么办?插图19

还可以这样,简单吧

对非关键字符(如无效注释符号)具备 ​​容错性,这个又怎么理解

不能这样:

SQL注入绕waf姿势:sleep被过滤了怎么办?插图20

也不能这样

SQL注入绕waf姿势:sleep被过滤了怎么办?插图21

简单来说,就是不能在函数的连续关键词里,进行操作,所有的添加位置都不能影响函数关键字的连续性。

其实这个机制,很好理解,例如:

SQL注入绕waf姿势:sleep被过滤了怎么办?插图22

SQL注入绕waf姿势:sleep被过滤了怎么办?插图23

理解了吧?只要换行,不打断关键函数的连续性,就可以正常的执行语法,而注释也是一样的~

那么我们的第一个绕wafpayload其实就诞生啦

首先使用普通的payload

SQL注入绕waf姿势:sleep被过滤了怎么办?插图24

被拦截了惨!!!随便搞一个注释:

SQL注入绕waf姿势:sleep被过滤了怎么办?插图25

还是拦截了,惨!!!!!!

那么随便搞注释的基础上随便混淆呢?


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

记一次新手小白java反序列化——cc1链的学习
WordPress 未授权本地文件包含漏洞(CVE-2025-2294)
emlog pro-2.5.7-2.5.8 存在SQL注入漏洞
JAVA安全学习——SQL注入审计
使用 Proxychains 和 Tor 匿名化你的流量
渗透测试工具 | 信息泄露挖掘——利器HAE

发布评论