无列名注入总结
前言
在information_schema被过滤时,无法获取到表名和列名,这时候就需要通过无列名注入来获取信息。
获取表名
无列名注入也是需要表名的,可以先通过InnoDb和sys来获取表名
InnoDb
要求:Mysql版本>5.6
inndb中有innodb_index_stats和innodb_table_stats两张表,这两张表中存储了数据库和其中的数据表的信息,但是没有存储列名。
查询表名
1 |
|
sys
要求:Mysql版本>5.7
通过查询sys.schema_table_statistics_with_buffer和sys.schema_auto_increment_columns获得表名
sys.schema_auto_increment_columns
1 |
|
sys.schema_table_statistics_with_buffer
1 |
|
无列名注入
无列名注入的原理是依靠union select时产生的虚拟表来查询数据。
正常的表
union select产生的虚拟表,必须保证查询列数是准确的
只要给虚拟表取一个别名,即可查询其中的数据,下面查询了第二列的数据
1 |
|
在反引号被过滤时还可以使用给列起别名的方式查询
1 |
|
还可以使用表名.列名
这种形式,n是我们给虚拟表起的别名
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!