无列名注入总结
前言
在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 协议 ,转载请注明出处!