sqli
- Less-11
- 知识点
- 题解
- Less-12
- 题解
- Less-13
- 题解
- Less-14
- 题解
- Less-15
- 知识点
- 题解
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 就会了。
半烟半雨溪桥畔,渔翁醉着无人唤。
——《菩萨蛮》(宋)黄庭坚