沉铝汤的破站

IS LIFE ALWAYS THIS HARD, OR IS IT JUST WHEN YOU'RE A KID

information_schema被过滤了如之奈何其一

0x00 前言


我们都知道,information_schema在MYSQL注入中有着十分重要的作用,是用来查表、查列名的重要的数据库,既然对于黑客很重要,那骚瑞凹~我WAF当然要把这个关键词禁止掉。如果没有什么其他方法,我们可能就会像下面这个meme狗一样啦(自己乱p的图),所以本文,我们就来总结一下其他的查表名的方法吧。

0x01 MYSQL5.7中的SYS库


简单介绍

sys是mysql5.7引入的一个新的系统数据库,它自己本身不储存数据,数据都来源于performance_schemainformation_schema,引入它的目的是以一种便于数据库管理员DBA理解的形式呈现performance_schema中的信息,使管理员更好的掌握数据库运行情况。

sys库中有两种视图,一种是普通表名如host_summary,这种表的数据经过了格式化处理,便于人阅读;另一种是以x$开头,如x$host_summary,这种表中的数据是原始数据,便于电脑处理。如下图所示。

image-20210217202424754

sys.schema_auto_increment_columns

当一个表有设置某列自增的时候,这个视图就会展示对其的监控信息,所以我们可以借此查询到table_name

image-20210217203408823

局限性就是,当某个表中没有自增列的时候,自然就查询不到。

sys.(x$)schema_table_statistics_with_buffer

这些视图汇总了 table 统计信息,包括InnoDB缓冲池统计信息。默认情况下,行按总 await 时间降序排序(争用最多的 table 排在最前面)。

这些视图使用辅助视图x$ps_schema_table_statistics_io

image-20210217205626267

sys.(x$)schema_table_index_statistics

这些视图提供索引统计信息。默认情况下,行按总索引延迟降低的 Sequences 排序。

image-20210217205130938

当有设置索引的列时,可以使用。

sys.(x$)schema_table_statistics

这些视图汇总了 table 统计信息。默认情况下,行按总 await 时间降序排序(争用最多的 table 排在最前面)。

这些视图使用辅助视图x$ps_schema_table_statistics_io

image-20210217210123819

当然,以上查询sys库的操作,都会遇到权限问题😅

0x02 MYSQL5.6.x的innodb注入


简单介绍

For MySQL 5.5 and later, the default storage engine is InnoDB.

innodb说mysql中的一个储存数据的引擎,并在MySql5.5之后的版本成为默认的引擎

innodb_index_stats和innodb_table_stats

mysql 5.6.x版本起,mysql库增添了两个新表,一个是innodb_index_stats,另一个是innodb_table_stats。

这两个表其实是用于记录更改和新创建的数据库和表的信息,但准确的说是保存最近的数据库变动记录。

image-20210217214434445

然而这个好像还是会有权限问题😅

0x03 参考


聊一聊bypass information_schema - 安全客,安全资讯平台 (anquanke.com)

MYSQL的SYS数据库_jayewu的博客-CSDN博客_mysql sys

学习MySQL 5.7的Sys库使用(一) - 云+社区 - 腾讯云 (tencent.com)

Mysql注入新姿势—innodb存储引擎的利用 - 先知社区 (aliyun.com)