WAF的正确bypass


Posted in PHP onJanuary 05, 2017

本文属i春秋的原创奖励计划,未经许可禁止转载!

前言 半年前的我,手握各种WAF的bypass,半年之后的我。就把思路分享出来了。别问我什么!问了我也不会告诉你,我是没事闲的!是不是好多人遇见WAF,就一阵头大呢~今天我就开车啦~大家快上车!

正文 测试环境

php:我使用的是 phpStudy

WAF:各种WAF的官网

测试思路 php的本地环境是用来检测sql语句是否可以执行。

WAF官网用来测试语句是否被拦截。

重点 :

1.HTTP数据包的认识。

2.充分利用数据库的注释功能。

3.有对WAF的构造思路。

测试代码 本地PHP存在注入漏洞的代码:

<?
php$id = $_GET['x'];
$conn = mysql_connect('127.0.0.1','root','Lyy1314...');
mysql_select_db('ceshi',$conn); 
$sql = "select * from user where id={$id}";
$cun = mysql_query($sql);
echo "< charset=utf-8>";while($row = mysql_fetch_array($cun))
{  
echo "url:".$row['URL']."<br>";  
echo "password:".$row['password']."<br>";  
echo "<hr>";
} 
mysql_close($conn);
echo "您当前执行的SQL语句:";
echo urldecode($sql);
?>

GET型注入测试 - 伪造HTTP数据包 GET型注入相对于POST注入来说,在某些方面是比POST注入bypass更轻松一些的。这是为什么呢?答案是因为POST数据包中也包含了GET包哦~我们可以通过伪造POST数据包的方式进行GET注入。

也就是说,GET的类型最少有三种,甚至更多的数据包类型可以进行注入。

如:POST、PUT、GET。

1.测试普通的GET型注入 

WAF的正确bypass

可以发现,上面成功接收到了GET数据包提交的数据。这是理所当然的!

2.测试POST提交的GET型注入 

WAF的正确bypass

从上面可以看出,POST数据包种,确实包含了GET的数据包。所以,在有些时候进行Bypass测试时,适当的改下数据包类型,也是可以的哦。

在360主机卫士的之前版本中,POST提交只拦截POST的数据,当你利用POST数据包进行GET注入时,它是不会进行拦截的哦~ GET型注入测试绕过云锁 - 伪造HTTP数据包 首先,我们去云锁的官网进行Bypass测试! 我们在云锁官网的URL后面加入 and 1=1 进行测试。

当然,正如所料 100% 被拦截 

 WAF的正确bypass

一般情况,大家都会扭头就走~ 那我们现在来伪造个POST数据包,进行测试把~ 

 WAF的正确bypass

正如我们期待的那样,伪造数据包后,WAF就被一棍子打死了~ 有时,即使我们伪造数据包后,仍过不了WAF,不要灰心,因为这个时候WAF的规则绝对比GET包的规则少哦~ GET型注入测试 - 合理构造HTTP数据包 - 思路 在http数据包中每个参数中间都会用&符连接,那么我们可不可以利用这个&符号呢? 下面我们先来进行本地测试! 

WAF的正确bypass

我们发现即使 &符后面的参数被 /* 包含住,这可以被接收到。并没有被注释掉! 那是因为, /* 被HTTP当成了参数a的值,而并不是当成了注释! 有时候,我们可以利用这个方法,加其他的方法来bypass。

后记 挖WAF的bypass时,一定要从多方面入手,编码,协议,语句等,甚至有时都会利用系统的截断!

推荐大家买一本关于 HTTP协议 方面的书籍进行阅读,因为,只有越接近底层,才能越了解它。最后从方方面面进行绕过。

有编程功底的,可以思考一下WAF的编写方式,哪里容易出现漏洞等~比如我们常常用来截断文件的%00,在安全狗中却能截断安全狗对HTTP协议的检测。比如菜刀过狗时,EVAL%00()是不会被杀的!不要只靠别人!思路是你自己的!你学到的知识也是属于你自己的!

PHP 相关文章推荐
通过ICQ网关发送手机短信的PHP源程序
Oct 09 PHP
PHP源码之explode使用说明
Aug 05 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
Dec 16 PHP
windows7下php开发环境搭建图文教程
Jan 06 PHP
PHP使用CURL实现多线程抓取网页
Apr 30 PHP
帝国cms目录结构分享
Jul 06 PHP
php微信公众平台开发之微信群发信息
Sep 13 PHP
实例讲解PHP表单处理
Feb 15 PHP
PHP里的$_GET数组介绍
Mar 22 PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 PHP
PHP7变量处理机制修改
Mar 09 PHP
phpcms的分类名称和类别名称的调用
Jan 05 #PHP
php 5.4 全新的代码复用Trait详解
Jan 05 #PHP
golang 调用 php7详解及实例
Jan 04 #PHP
PHP 与 UTF-8 的最佳实践详细介绍
Jan 04 #PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 #PHP
PHPExcel导出2003和2007的excel文档功能示例
Jan 04 #PHP
CI框架实现优化文件上传及多文件上传的方法
Jan 04 #PHP
You might like
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
PHP addslashes()函数讲解
2019/02/03 PHP
理解Javascript_13_执行模型详解
2010/10/20 Javascript
jQuery数据显示插件整合实现代码
2011/10/24 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
python 域名分析工具实现代码
2009/07/15 Python
详解Python中的__getitem__方法与slice对象的切片操作
2016/06/27 Python
Python爬虫DNS解析缓存方法实例分析
2017/06/02 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
使用NumPy和pandas对CSV文件进行写操作的实例
2018/06/14 Python
python简易实现任意位数的水仙花实例
2018/11/13 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
解决python字典对值(值为列表)赋值出现重复的问题
2019/01/20 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
Python paramiko使用方法代码汇总
2020/11/20 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
公司董事长助理工作职责
2014/07/12 职场文书
弘扬焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
护士工作心得体会
2016/01/25 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android