报错注入分为三类:隐式转换,和显示转换,declare函数 隐式转换:
原理:将不同数据类型的数据进行转换或对比
select * from test.dbo.users where (select user)>0 #对比
select * from test.dbo.users where ((select user)/1)=1 #运算
显示转换:
原理:
依靠:CAST,DECLARE和CONVERT函数进行数据类型转,当如果转化的是有关查询语句的结果,那么就会触发报错,但注意只能爆一个字符串
select 'naihe567' as name,'567' as num)as b#这里我们使用了select 创建了一个自定义的临时表方便观察
select cast((select name from (select 'naihe567' as name,'567' as num)as b) as int) #cast函数
select convert(int,(select name from (select 'naihe567' as name,'567' as num)as b)) #convert函数
declare @s varchar(2000) set @s='select naihe567' exec(@s) #declare