sqlilabs23-28a关
空格替代:
%09:tab(水平)
%0a:新建一行
%0c:新建一页
%0d:return
%0b:tab(垂直)
%a0:空格
/**/:代替空格
less-23操作过程
1.做23关的时候,发现各种注释符都被过滤了,那么我们可以怎么绕过注释符来进行操作呢,首先通过报错,来获取到他的闭合方式
2.了解到闭合方式之后,我们就可以利用‘or (1)or ‘ 的方式,绕过使用注释符,完整的sql为 select * from users where id = ’‘ or (1) or ’‘ limit 0,1,这样就不用注释符了
3.可以使用报错注入,来获取些信息,比如当前当前数据库
4.再来获取下表名,还有其他的一些操作都是可以的
less-24操作过程
一阶注入和二阶注入区别
一阶注入原理
(1)一阶SQL注入发生在一个HTTP请求和响应中,对系统的攻击是立即执行的;
(2)攻击者在http请求中提交非法输入;
(3)应用程序处理非法输入,使用非法输入构造SQL语句;
(4)在攻击过程中向攻击者返回结果。
二阶注入原理:
(1)攻击者在http请求中提交恶意输入;
(2)恶意输入保存在数据库中;
(3)攻击者提交第二次http请求;
(4)为处理第二次http请求,程序在检索存储在数据库中的恶意输入,构造SQL语句;
(5)如果攻击成功,在第二次请求响应中返回结果
1.less24就是一个二次注入的关卡,通过查看源码,可以得知,在修改密码的页面可以产生注入,大致思路就是:
1)先注册一个username= admin’#的用户
2)登陆
3)修改密码
2.
3.实测
登陆
修改admin‘#的密码
使用admin登陆原密码admin,登陆失败
使用改过的密码,成功
less-25操作过程
25关的思路很简单,他就是把and和or过滤了,我们不使用and和or 就可以了
1.?id=1’试错
2.使用注释符,看有没有被过滤,发现不报错
3.我们不使用and 和 or而是用 || 或者 && 的时候,发现报错,这让我们知道我们的注释符没效果
4.所以我们使用less23的方式来试试,发现可以
5.报错注入发现没问题,我们思路正确
6.剩下的参考less23.。。。。
less-25a操作过程
操作和24基本相同,只不过他是属于整型,直接一条sql?id=-1 union select 1,database(),3
less-26操作过程
less26和25一样,在过滤or和and 还有注释符的基础上,有过滤了空格,只需要我们不使用空格,使用其他的空格表示法就可以了,他的闭合方式和less25也相同,下面直接给出注入内容,获取当前数据库名称?id=1' || (select%a0updatexml(1,concat(0x7e,database()),1)) || '
less-26a操作过程
less26a的闭合方式为(‘’),同样他也是过滤了很多东西,空格,or,and,注释符,我们可以用sql直接爆出他的库
?id=100')%0bunion%0bselect%0b1,database(),3%0b||('1')=('1
less-27操作过程
less27在之前关卡的基础上过滤了union和select 我们可以使用重复写的方式,就是在union里边再写一个union,由于他的select过滤了两次,所以,我们需要重复写两次select? id=1'|| (seseselectlectlect%a0 updatexml(1,concat(0x7e,version()),1)) || '
less-27a操作过程
闭合方式为“”测试出来的
less-28操作过程
less28闭合方式为(‘’),根据这个闭合方式,我们就可以进行操作了。难的主要是寻找闭合方式来构造sql
less-28a操作过程
闭合方式和28关一样。。。。爆出当前数据库吧
less-29