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

原文地址:https://www.cnblogs.com/pangsong/p/12249793.html