SQLi_Labs通关游戏

  • A+
所属分类:sql注入
摘要

sql通关游戏

SQLi_Labs通关游戏
为了不干扰自己本机环境,sql-lab我就用的docker跑起来的,搭建也非常简单,也就两条命令

然后在sql-lab上直接初始化数据库就好了。

这里列举一下sql基础语句

Less-1

尝试添加’注入,发现报错

这里我们就可以直接发现报错的地方,直接将后面注释,然后使用

Less-2

在添加’之后,得到返回

可以得到这个sql语句其实并没有单引号,只是用数字进行查询,例如

所以我们也可以跟上面一样,payloads:

Less-3

添加’之后,返回

可以得到大概的sql语句:

所以我们可以需要闭合)。

Less-4

尝试’并未发现报错,尝试”发现报错

可以得到大概的sql语句

所以payload:

其他注入语句同上 ,就不再一一列举了。

Less-5

尝试’发现报错

猜测sql语句为

如果尝试之前的注入方法,会发现不再会返回我们注入的信息,如果注入成功的话,页面会返回You are in...,出错的话就不会返回这个字符串,所以这里我们可以进行盲注。

使用left()

例如我们可以使用1' and left(version(),1)=3%23这个payload进行测试,截取version()得到的最左侧的字符判断是否为3,如果为3则正常返回You are in...,否则不返回。所以我们可以利用这个一步一步爆破得到left(version(),1)=5。爆破区间可以确定在/[0-9.]/

采用1'and length(database())=8%23对数据库名字长度进行爆破,确定数据库名字长度之后,我们可以使用database()来进行爆破数据库名,采用left(database(),1)>'a'这个payload进行测试,原理跟上述一致,看返回即可,直到截取长度与数据库名字一致为止,这里效率比较高的就是采用二分法进行盲注。

使用substr()、ascii()

也可以采用substr()、ascii()函数进行尝试:

使用regexp()

使用ord()、mid()

使用报错注入

推荐一篇超详细的讲解报错注入的文章

Mysql报错注入原理分析(count()、rand()、group by)

超链接:https://www.cnblogs.com/xdans/p/5412468.html

使用延时注入

benchmark 是Mysql的一个内置函数,其作用是来测试一些函数的执行速度。benchmark() 中带有两个参数,第一个是执行的次数,第二个是要执行的函数或者是表达式

Less-6

没有回显,可以使用布尔盲注

可以发现>100有回显,小于就没有,也可以用报错注入…

这里就是把Less-5 中的'改成"就行了

Less-7

使用文件导出

Less-8

可以使用时间盲注,也可以用 bool 盲注

Less-9

同 Less-8 可以使用时间盲注

Less-10

Less-11

报错注入,少一列就行了

Less-12

Less-13

成功登录,报错注入成功但是不回显,可以考虑盲注

Less-14

成功登录,依然不能回显,尝试使用布尔盲注

发现可以用updatexml进行报错注入

Less-15

成功登录,布尔注入或者时间盲注均可行

Less-16

成功登录,布尔注入或者时间盲注均可行

Less-17

update注入,username过滤了很多,有password错误回显,考虑用报错注入

Less-18

登录成功后,页面提示

那么有可能是 ip 或者 UA 注入,看了一下发现是个 Header 头注入,这里需要注意这是登录成功的条件下才能触发的,而且既然是insert注入,需要用'1'='1闭合后面的 sql 语句,否则就是语法错误了

Less-19

登录成功后提示

于是我们可以知道是在Referer应该有注入点,在 Referer 处同样用

可以注入

Less-20

cookie 注入,登录成功后修改 cookie 即可

Less-21

登录成功后发现 cookie 加上了 base64

用上面的 payload 进行 base64 编码就行了,记得=要 urlencode

Less-22

同 21 ,单引号换成双引号即可

Less-23

这里#--+均被过滤了,但是我们可以利用or "1"="1来闭合后面的双引号也可以达到我们的目的

Less-24

这里是个二次注入,我们可以先注册一个admin'#的账号,在修改密码处我们就可以以自己的密码修改 admin 的密码了,因为修改密码处形成的 sql 语句是

这样#就注释掉了后面的 sql 语句

Less-25

题目很直接,提示直接把 orand过滤了,但是可以用&&||绕过

也可以双写绕过

Less-25a

Less-26

题目提示空格与注释被过滤了,可以使用%0a绕过,可以盲注也可以报错注入

Less-26a

题目提示空格与注释被过滤了,可以使用%a0绕过,报错注入不出,可以用布尔盲注

Less-27

题目提示unionselect被过滤了,可用大小写绕过

Less-27a

增加了"

Less-28

union select大小写均被过滤,但是select还可单独用,盲注即可

Less-28a

依然可以用盲注

Less-29

利用tomcatapache解析相同请求参数不同的特性,tomcat解析相同请求参数取第一个,而apache取第二个,如?id=1&id=2tomcat取得1,apache取得2

Less-30

与 29 架构一样,原理一致只不过加了"限制

Less-31

架构一样,多了")

Less-32

注意是GBK,可以用%df进行宽字节注入

Less-33

Less-34

Less-35

Less-36

Less-37

Less-38

堆叠注入,成功创建test数据表

Less-39

Less-40

Less-41

Less-42

password处无过滤

Less-43

password处无过滤

Less-44

Less-45

Less-46

order by注入

usernamepassword均为列名,所以以下需要知道列名

1=1换成bool盲注的语句函数即可用于获取数据

时间盲注

Bool 盲注

报错注入:

procedure analyse 参数后注入

into outfile参数:

上传网马,可以在后面加上lines terminated by 16进制转码的数据

Less-47

',可以用报错

也可以用时间盲注

procedure analyse 参数后注入

Less-48

Less-49

Less-50

堆叠注入

Less-51

Less-52

Less-53

Less-54

如果没有点提交按钮将会进入下面的else语句,有过滤,显然突破口在上面。如果点了提交将会setcookie,然后看到有个GET提交的id参数,然后有个更新数据库操作,这里限制了10次请求次数,否则更新数据库。

Less-55

这个题限制了请求14次,不过当测试出闭合情况之后后面就一切顺利了。
先尝试闭合

尝试之后发现是用)闭合

Less-56

这几关都差不多,首先也是尝试闭合

Less-57

这关是双引号闭合的

Less-58

查询之后并没有返回查询数据库当中的数据,不能使用union联合注入,但是有报错回显,可以使用报错注入。

Less-59

SQL语句:

payload:

Less-60

Less-61

Less-62

接下来几关要在130次内完成盲注。只不过有次数限制,很明显不能去爆破

跑字段的脚本

Less-63

这关跟上一关一样,唯一的区别在于需要使用单引号闭合

不再赘述!

Less-64

这关跟上一关一样,唯一的区别在于需要使用括号闭合

不再赘述!

Less-65

这几关性质都一样,只不过闭合语句不同,不再赘述

SQL语句:

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: