目录
文件上传绕过WAF
下面所有抓包均在burp suite中进行
首先打开bp 按照下图步骤操作
再打开火狐浏览器,打开火狐 foxy proxy 脚本(下面设置代理信息)
burp suite和火狐插件配合使用
当抓到包时,可以右键鼠标点击这个指令可以测试代码执行
点击send 即可在右边看到页面回显
首先,我们先要明白waf工作的原理,可以准备两个文件 1.php和1.jpg对他进行测试
我们可以发现1.jpg可以成功上传
而1.php则不能上传
可以推测他是根据文件后缀名来进行拦截
接下来我们可以修改content-type来判断
我们上传1.jpg文件,抓包修改content-type为:application/octet-stream
发现可以成功上传,由此得出,waf应该是通过后缀名来进行拦截
1.双写 filename= 进行绕过
filename=;filename="1.php"
上传1.php,然后抓包修改
上传成功:
2.利用无用文件头绕过
在请求体前加入大量无用数据(要和请求头空一行),当插入足够多的数据后,成功上传
3.使用多个等号绕过检测
Content-Disposition: form-data; name="file"; filename==="1.php"
4.去掉双引号或替换为单引号绕过检测
Content-Disposition: form-data; name=file; filename=1.php
Content-Disposition: form-data; name='file'; filename="1.php"
5.混淆waf匹配字段
混淆form-data
Content-Disposition: name="file"; filename="1.php" //去除form-data
Content-Disposition: SSSSSSS="DDDDDDD"; name="file"; filename="1.php"
//替换form-data为垃圾值
Content-Disposition: form-data ; name="file"; filename="1.php" //form-data 后加空格
Content-Disposition: for+m-data; name="file"; filename="1.php" //form-data中加 +
sql注入绕过WAF
首先 linux操作系统区分大小写 ,Windows 系统不区分大小写
1.变换大小写
当系统黑名单里有select时,可以将S大写,从而绕过检测
2.将敏感字符替换为编码
替换为
1.url编码
2.unicode编码
3.十六进制编码
3.垃圾字符过滤
一般为了考虑性能等原因,程序员在设置WAF绕过规则时设置了过滤的数据包长度,如果数据包太大或太长,就会直接放弃匹配过滤后面的数据,从而略过这个数据包。因此我们可以通过传入大量的参数值,超到WAF绕过的临界值,从而绕过
index.php?id=-1ccccc(1000个c)ccc union select 1,2,3
4.将敏感字符替换为符号
比如 and 替换为 &&
5.注释符
在mysql中/*admin*/是注释符,就像C和js中//代表注释的意思,也可以充当空白符。因为 /**/在sql语句中可以解析成功。事实上许多WAF都考虑到/**/可以作为空白分,但是waf检测 “/*.*/”很消耗性能,可能在检测中间引入一些特殊字符,例如:/\w+*/。或者,WAF可能只中间检查n个字符“/*.{,n}*/”,直至达到检测的最大值,因此payload:
index.php?id=-1 union/**/select 1,2,3
6.重写
只适用于waf检测一次情况(同时黑名单将select替换为空)
可以双写select 比如sselectelect
当系统检测到select时,将他替换为空,第二个select继续执行