文件上传与sql注入绕过WAF

目录

文件上传绕过WAF

1.双写 filename= 进行绕过 

 2.利用无用文件头绕过

 3.使用多个等号绕过检测

4.去掉双引号或替换为单引号绕过检测

5.混淆waf匹配字段

 sql注入绕过WAF

1.变换大小写

2.将敏感字符替换为编码

3.垃圾字符过滤

4.将敏感字符替换为符号

5.注释符

6.重写


文件上传绕过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继续执行
 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值