sql注入中,如果information_schema被过滤,该怎么绕过
目录
一、sys.schema_auto_increment_columns
1.功能
2.利用思路
二、sys.schema_table_statistics_with_buffer
1.功能
2.利用思路
三、mysql.innodb_table_stats和mysql.innodb_index_stats
1.mysql.innodb_table_stats
1.1功能
2.mysql.innodb_index_stats
2.1功能
3.利用思路
一、sys.schema_auto_increment_columns
sys.schema_auto_increment_columns
是 MySQL 数据库中 sys
系统数据库里的一个视图,它主要用于查看数据库中自增列的相关信息。下面从多个方面为你详细介绍:
1.功能
在数据库管理和开发过程中,了解表的自增列信息十分重要。sys.schema_auto_increment_columns
视图提供了一种便捷的方式来获取这些信息,例如自增列所在的数据库名、表名、列名,以及当前自增的最大值等。这对于监控数据库状态、进行性能优化和数据管理都有帮助。
这个视图通常包含以下几列信息:
table_schema
:自增列所在的数据库名。table_name
:自增列所在的表名。column_name
:自增列的列名。auto_increment
:当前自增列的最大值,即下一次插入记录时自增列会使用的值。data_type
:自增列的数据类型。- 其他可能与自增列相关的统计信息。
在 MySQL 中,information_schema
是一个系统数据库,它存储了数据库的元数据信息。而 sys
数据库是 MySQL 5.7 及更高版本引入的,它基于 information_schema
和 performance_schema
构建,提供了更方便、更人性化的视图来查询和监控数据库。sys.schema_auto_increment_columns
视图实际上是对 information_schema
中相关表的数据进行了整合和处理,让用户可以更轻松地获取自增列信息。
2.利用思路
sys.schema_auto_increment_columns
视图包含了数据库中自增列的信息,如数据库名、表名、列名等。在 SQL 注入场景下,可通过构造包含该视图的注入语句,结合二分查找、时间盲注、报错注入等技术,绕过对 information_schema
的过滤,获取目标数据库的关键信息。
二、sys.schema_table_statistics_with_buffer
1.功能
sys.schema_table_statistics_with_buffer
是 MySQL sys
数据库中的一个视图。sys
数据库是 MySQL 5.7 及更高版本引入的,旨在提供更方便、更人性化的方式来查看和分析数据库的性能和元数据信息。sys.schema_table_statistics_with_buffer
视图结合了表的统计信息和缓冲池的使用情况,帮助数据库管理员和开发者了解数据库中各个表的使用频率、读写操作情况以及在缓冲池中的缓存状态。
该视图通常包含以下重要列信息:
table_schema
:表所在的数据库名。table_name
:表的名称。rows_fetched
:从表中读取的行数。rows_inserted
:插入到表中的行数。rows_updated
:更新的行数。rows_deleted
:删除的行数。io_read_requests
:表的磁盘读请求次数。io_write_requests
:表的磁盘写请求次数。buffer_pool_pages
:表在缓冲池中占用的页面数量。
2.利用思路
当 information_schema
被过滤时,可以使用 sys.schema_table_statistics_with_buffer
视图来获取数据库中的表信息。通过构造注入语句,结合时间盲注、报错注入、联合查询注入等技术,从该视图中提取表名、数据库名等关键信息。
三、mysql.innodb_table_stats和mysql.innodb_index_stats
1.mysql.innodb_table_stats
1.1功能
这是 MySQL 系统数据库 mysql
中的一个表,主要用于存储 InnoDB 存储引擎中表的统计信息。这些统计信息对于查询优化器来说非常重要,它可以根据这些数据来评估不同查询执行计划的成本,从而选择最优的执行计划。
- 包含信息:
database_name
:表所在的数据库名称。table_name
:表的名称。last_update
:统计信息最后更新的时间。n_rows
:表中的大致行数。clustered_index_size
:聚簇索引占用的页面数。sum_of_other_index_sizes
:其他索引占用的页面总数。
2.mysql.innodb_index_stats
2.1功能
同样位于 mysql
数据库中,用于存储 InnoDB 存储引擎中索引的统计信息。查询优化器利用这些索引统计信息来判断使用哪些索引可以更高效地执行查询。
- 包含信息:
database_name
:索引所属表所在的数据库名称。table_name
:索引所属的表名。index_name
:索引的名称。last_update
:统计信息最后更新的时间。stat_name
:统计项的名称,如n_diff_pfxNN
表示索引前缀的不同值数量。stat_value
:对应统计项的值。
3.利用思路
当 information_schema
被过滤时,可以利用 mysql.innodb_table_stats
和 mysql.innodb_index_stats
来获取数据库和表的相关信息。通过构造合适的注入语句,结合常见的注入技术(如时间盲注、报错注入、联合查询注入),从这些系统表中提取有用信息,例如数据库名、表名等。