0x00 前言
我们都知道,information_schema
在MYSQL注入中有着十分重要的作用,是用来查表、查列名的重要的数据库,既然对于黑客很重要,那骚瑞凹~我WAF当然要把这个关键词禁止掉。如果没有什么其他方法,我们可能就会像下面这个meme狗一样啦(自己乱p的图),所以本文,我们就来总结一下其他的查表名的方法吧。
0x01 MYSQL5.7中的SYS库
简单介绍
sys是mysql5.7引入的一个新的系统数据库,它自己本身不储存数据,数据都来源于performance_schema
和information_schema
,引入它的目的是以一种便于数据库管理员DBA理解的形式呈现performance_schema
中的信息,使管理员更好的掌握数据库运行情况。
sys库中有两种视图,一种是普通表名如host_summary
,这种表的数据经过了格式化处理,便于人阅读;另一种是以x$
开头,如x$host_summary
,这种表中的数据是原始数据,便于电脑处理。如下图所示。
sys.schema_auto_increment_columns
当一个表有设置某列自增的时候,这个视图就会展示对其的监控信息,所以我们可以借此查询到table_name
局限性就是,当某个表中没有自增列的时候,自然就查询不到。
sys.(x$)schema_table_statistics_with_buffer
这些视图汇总了 table 统计信息,包括
InnoDB
缓冲池统计信息。默认情况下,行按总 await 时间降序排序(争用最多的 table 排在最前面)。这些视图使用辅助视图
x$ps_schema_table_statistics_io
。
sys.(x$)schema_table_index_statistics
这些视图提供索引统计信息。默认情况下,行按总索引延迟降低的 Sequences 排序。
当有设置索引的列时,可以使用。
sys.(x$)schema_table_statistics
这些视图汇总了 table 统计信息。默认情况下,行按总 await 时间降序排序(争用最多的 table 排在最前面)。
这些视图使用辅助视图
x$ps_schema_table_statistics_io
。
当然,以上查询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。
这两个表其实是用于记录更改和新创建的数据库和表的信息,但准确的说是保存最近的数据库变动记录。
然而这个好像还是会有权限问题😅
0x03 参考
聊一聊bypass information_schema - 安全客,安全资讯平台 (anquanke.com)
MYSQL的SYS数据库_jayewu的博客-CSDN博客_mysql sys