盲注
盲注
1.substr()/mid()
substr(a,b,c)从b位置开始,截取字符串a的c长度
(1)字符串截取,截取字符串的某一位
(2)比较是否相等
substr((select database()),1,1) = 'a'
select substr((select database()),3)
2.right():
表示截取字符串的右面几位.
使用方法:ringht(截取的字符串,截取长度)
(1)
select rigrht((select database()),3)
(2)
ascii(right(所截取字符串, x))
会返回从右往左数的第x位的ASCII码
3.left():
表示截取字符串的左面前几位
使用方法:left(截取的字符串,截取长度)\
(1)
select left((select database()),3)
(2)
ascii(reverse(left(所截取字符串, x)))
会返回从左往右数的第x位的ASCII码
select ascii(reverse(left((select database()),3)))
4.regexp()/rlikr():
判断字符串是否匹配正则表达式
使用方法: binary目标字符串 regexp正则
select (select database()) regexp '^c'
5.trim():
移除首位空白及TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM str) 表示移除str这个字符串(BOTH)/句首(LEADING)/句尾(TRAILING)的remstr
6.insert():
字符串替换函数
select insert('abc',1,2,'xxx')
将abc的第一位开始的2个长度(也就是ab)替换为xxx,则返回xxxc
7.运算;
(1)and &&
在盲注中,可以用一个true去与运算一个ASCII码减去一个数字,如果返回0则说明减去的数字就是所判断的ASCII码:
(2)or ||
用一个false去或运算一个ASCII码减去一个数字,如果返回0则说明减去的数字就是所判断的ASCII码:
8.case():
select case 'a' when 'a' then 1 else 0 end
case when (表达式) then exp1 else exp2 end
#表示如果表达式为真则返回exp1,否则返回exp2
case 啥 when 啥啥 then exp1 else exp2 end
#表示如果(啥=啥啥)则返沪exp1,否则返回exp2
延时盲注
1.sleep
select sleep(3)
(1)使用if或case构造条件表达式进行延迟
select if((1=1),sleep(3),0)
(2)无if和case 根据condition的真假来决定是否触发sleep()
,可以将condition整合进sleep()
中,做乘法
如果condition为真则返回1,5*(condition)
即5*1
为5,延时5秒;如果condition为假则返回0,5*(condition)
即5*0
为0,延时0秒
select sleep( 5 * (1=1) )
select sleep( 5 * (1=2) )
2.benchmark
替代sleep
用法:benchmark(执行多少次,执行什么操作)
select benchmark(1000000,sha1('Y1ng'))
select benchmark(100000,sha1('Y1ng'))
time
报错注入:
① 0x7e=’~’ ② concat(‘a’,‘b’)=“ab”
③ version()=@@version
④ ‘~‘可以换成’#’、’$'等不满足xpath格式的字符
⑤ extractvalue()能查询字符串的最大长度为32,如果我们想要的结果超过32,就要用substring()函数截取或limit分页,一次查看最多32位
and updatexml(1,concat(0x7e,(),0x7e),1) --+一共可以接收三个参数,报错位置在第二个参数.
and extractvalue(1,concat(0x7e,())) --+一共可以接收两个参数,报错位置在第二个参数