在开始之前我想先在这里提醒选择阅读这篇博客的读者。因为本人初涉安全领域知识。关于sql盲注尚处于学习和摸索状态。此博客亦是只起到对现所学知识的一个记录。所以只起到一个借鉴的作用,并不建议读者用作专业知识学习。
此次练习为渗透练习平台上的操作结果。
首先介绍什么是基于时间的盲注
相信学习到基于时间的盲注的读者对盲注应该不再陌生(最起码知道大概的情况),正如上面所说,基于boolean的盲注在报错页面上会提示正确(1)或错误(0)提示。而基于时间的盲注是建立在无任何报错提示前提上的注入方法。
具体演示
先在登陆界面,于用户名处输入 “ ’ ” 用于查看具体报错信息
可以返回没有任何可用的信息
构造payload查看返回
一样的返回结果
那即是是这样也不一定就保证这个登陆界面是不存在sql注入漏洞的,而有的漏洞就是这里要讲的基于时间的注入漏洞。通过判断时间的长短来判断是否存在漏洞。
首先打开开发者选项选择控制平台>>netwok>>All,在这里可以看见所有请求发送到后台并进行相应数据查找所用的时间
然后再构造一次payload
可以看见上面使用到了sleep(5) ,
sleep()函数:是相应的sql查询语句延迟。
具体用法:sleeo(duration)
查看所用时间为6.05(s)
当我们单纯的输入用户名时,是可以看见时间是明显不同的(少很多)
也就是说,and sleep(5) 被拼接到了后台的sql查询当中,这显然就是一个注入漏洞。
总结:虽然后台并没有给出相应的错误提示,但通过查询时间的不同,依然能够判断出是否存在 注入漏洞(后台不加以限制的照搬前台查询请求)。
现在展示一个payload以及它的查询结果
database()取数据库名称。
substr(database(),1,1)取数据库中的1字符(也许就是表,但博主这里任然存在疑惑)
整句的意思就是,如果数据库的字符1=p,sleep 5 (s),如果不等,则不执行sleep(5).
如果有后台有执行上述payload,则会延迟返回5(s),则可以确定存在注入漏洞。
那到这里,sql注入(based time)已经演示完。再次声明这仅是本人在观看和学习安全视频后的练习结果,如果有需要改进和补充的地方,希望各位可以给我留言使加以更改。