sqli-labs靶场通关笔记:第9关 时间盲注
1.审题
这里不管输入什么参数,界面永远只有“you are in...”一种回显,不知道是对还是错,布尔盲注无法使用了。
2.思考
如果能通过构造语法来判断对错,是不是可以实现盲注。
这里用到if()三元函数和sleep()函数。
语法:IF(condition, value_if_true, value_if_false)
condition:布尔表达式(TRUE/FALSE)
value_if_true:条件为真时返回的值
value_if_false:条件为假时返回的值
sleep()函数的作用是响应延迟,比如sleep(5)就是时间响应延迟5秒。
//如果1=1成立,响应延迟5秒,否则立刻响应;
if(1=1,sleep(5),0)
1=1这个条件是永真,加上前面的条件来判断网页响应时间,如果立刻响应,则说明前一个条件存在错误。
通过语句拼接,发现单引号会延迟响应,双引号则马上响应,可以判断是单引号闭合。
既然可以通过响应延迟来判断条件对错,那么意味着可以盲注,这就是时间盲注。
3.做法
(1)判断闭合方式。
(2)判断数据库名称长度。
//判断名称长度是否大于8;
?id=1' and if(length(database())>8,sleep(5),0) --+
(3)逐个位判断字符,得到数据库名称。
//判断名称的第一个字符是不是小写字母;
?id=1' and if(ascii(substr(database(),1,1)) between 97 and 122,sleep(5),0) --+
(4)进一步注入表,字段,数据。
手工注入需要耗费的是时间,掌握原理后也可以使用工具注入。