《SQLi-Labs》03. Less 11~15

发布时间 2023-05-06 23:27:05作者: 第三天使


sqli。开启新坑。

Less-11

知识点

第十一关页面发生了变化,是账户登录页面。那么注入点在输入框。

前十关使用的是 get 请求,参数都体现在 url 上,而十一关是 post 请求,参数在表单里。可以直接在输入框进行注入。

根据经验可以猜测 sql 语句。大概的形式应该是 “ username=参数 and password=参数 ”。

题解

当输入 username 为 1 时出现错误图片。

输入 1' ,出现报错信息。根据报错信息可以推断该 sql 语句为:username='参数' and password='参数'

在这里插入图片描述

知道 sql 语句后可以构造一个恒成立的 sql 语句,看看查询出什么。

Username 输入(一个万能登录语句):

1' or 1=1 #

在这里插入图片描述

这里需要换成 “ # ” 来注释, 不能再用 “ --+ ”。

再看看联合查询:

1' union select 1, 2 #

在这里插入图片描述

都做到这里了,接下来的思路就和 Less-1 一样了。不多说了。

Less-12

这题,思路和 Less-11 一样。

题解

输入 1" 时,根据报错信息可以判断出参数是双引号带括号的。

在这里插入图片描述

判断是否存在 sql 注入。

1") or 1=1 #

看看回显。

1") union select 1, 2 #

剩下的该怎么做,理解了 Less-11 与 Less-1 就知道了。

Less-13

思路和 Less-11 一样。

题解

根据报错信息可以判断出参数是单引号带括号的。

在这里插入图片描述

剩下的不多说了。

Less-14

思路和 Less-11 一样。

题解

为双引号字符串。

在这里插入图片描述

这几题都和 Less-11 一样。

Less-15

知识点

布尔盲注。详见 Less-5。

题解

输入 1' 或者 1 时,错误回显。

在这里插入图片描述

输入 1' or 1=1 # 时,正确回显。

在这里插入图片描述

判断一下当前数据库名称的长度。

1' or length((select database()))>=8 #

在这里插入图片描述

得到数据库长度为 8。

然后通过一个一个字符串截取并通过 ASCII 码比较来得出数据库名。

1' or ascii(substr((select database()), 1, 1))=115 #
1' or ascii(substr((select database()), 2, 1))=101 #
...
1' or ascii(substr((select database()), 8, 1))=121 #

剩下的思路与过程,理解 Less-5 就会了。


半烟半雨溪桥畔,渔翁醉着无人唤。

——《菩萨蛮》(宋)黄庭坚