当前位置: 首页 > news >正文

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 来获取数据库和表的相关信息。通过构造合适的注入语句,结合常见的注入技术(如时间盲注、报错注入、联合查询注入),从这些系统表中提取有用信息,例如数据库名、表名等。

相关文章:

  • 【Linux系统】—— 调试器 gdb/cgdb的使用
  • 腾讯云大模型知识引擎×DeepSeek赋能文旅
  • 筛选相同项
  • 深入解析TCP/IP协议:从理论到实践的全链路剖析
  • Pytorch论文实现之GAN-C约束鉴别器训练自己的数据集
  • 机器学习的数学基础(三)——概率与信息论
  • SP字体UI放大代码
  • ComfyUI的安装
  • 基于Electron+Vue3创建桌面应用
  • C语言.h头文件的写法
  • 物联网技术赋能预测性维护的深度剖析与前景展望
  • 华为FusionCompute虚拟化平台
  • MacOS 15.3 卸载系统内置软件
  • 微信小程序---计划时钟设计与实现
  • 网络安全三件套
  • 【深度学习】Transformer入门:通俗易懂的介绍
  • 《仙台有树》里的馅料(序)
  • leetcode:942. 增减字符串匹配(python3解法)
  • 使用 DeepSeek + 语音转文字工具 实现会议整理
  • GO语言的安装以及第一个Go语言程序
  • 专访|“甲亢哥”的操盘手,带NBA球星们玩转中国流量
  • 两次蹚入同一条河,巴萨这一晚被命运抛弃
  • 联合国秘书长吁印巴“最大程度克制”,特朗普:遗憾,希望尽快结束冲突
  • 100%关税!特朗普要让美国电影100%美国制造
  • 罗志田:文学革命的社会功能与社会反响
  • 准80后遵义市自然资源局局长陈清松任仁怀市委副书记、代市长