• 从偶然的机会发现一个mysql特性到wooyun waf绕过题


    从偶然的机会发现一个mysql特性到wooyun waf绕过题

    MayIKissYou | 2015-06-19 12:00

    最近在测试的时候,偶然的机会发现了一个mysql的特性,

    为啥是偶然的机会呢。。。。。

    一次测试的过程中我在mysql的console下做了如下的操作:

    一次测试的过程中我在mysql的console下做了如下的操作

    看出些什么了么?

    我当时发现报错的时候例如-+{等符号 报错的时候提示的是''(双引号里没东西),但是如select后面添加1 a等内容的时候报的是

    selecta,select1等等。

    想到共性了么,-+{等等内容是能够直接添加到select后面的,知其那那个sql总结的帖子里有,

    例如

    select-1;

    select+1;

    select{x 1};

    而select后面直接跟1 a的时候就不可以直接报错了。

    再回过头去看那张图的时候发现select后面直接跟.的时候尽然也是提示的'',此时就开始怀疑select后面也应该是能够直接跟.号的。

    因此我们现在确定了select.的形式,此时想要做的是怎么闭合这个语句,使得该语句能够正常的执行。

    又开始手工能够测试:

    测试了多少payload,我也不记得了,最后当输入以下内容的时候,让我小happy了一下:

    测试了多少payload,我也不记得了,最后当输入以下内容的时候,让我小happy了一下:

    竟然提示的是

    Unknown table '1' in field list

    然后我就做了如下的操作:

    然后我就做了如下的操作:

    看到没竟然成功了使用的语句是:

    select.``.schema_name from information_schema.schemata;

    ps.我只能说运气不错。

    就这样证明了select后面直接跟.也是可以的。

    ---------------------------------------------------------华丽的分割线----------------------------

    wooyun waf绕过

    这是痛苦的经历,测试的过程中感觉到和往常的waf有点不同,感觉每当我拼凑出来的bypass语句能够执行的时候就出现了bad hacker。

    由于我是大晚上12点开始弄得,发现已经有答案了,测试了1个多小时没有结果之后就去看了下write up。

    我擦勒竟然完全和自己的做法不在同一频道,完全没想到这位牛使用的方法。

    整理下思路吧

    1:输入'报错了,一个like的查询语句,试试了初步判断里面没有内容,然后没有回显,而sql报错的时候不是mysql自己的报错,基本不能使用union,和报错注入,考虑时间盲注了。

    ps.自己之前一直在和那个union的过滤较劲,关键是没摸出到底是啥规则,好吧今天来的时候小v说不是基于规则的,我擦勒有点累蹦。

    2:由于基于时间盲住了因此就会有类似这样的模式:

    if(你这样,睡几秒,不睡)

    貌似and这种玩意都不能用,于是就直接使用运算符号吧:

    http://rile.gou.gg/search?query=1%27>(select[])

    在这里的时候输入各种玩意都返回报错,后来试了下select.貌似成功了。

    感觉应该有戏了,反反复复拼凑下得到了如下的payload,哈哈这里我偷懒没有去自己爆数据了直接拿了那位大牛爆出的表名,最终的payload

    http://rile.gou.gg/search?query=1%27>(select.``.schema_name from (select.``.schema_name,if(ascii(mid((select * from test.flag),1,1))=102,(benchmark(5000000,sha(1))),1) from information_schema.schemata)x)%23

    用lijiejie的脚本改一下,然后直接报flag:

    用lijiejie的脚本改一下,然后直接报flag:

    结果少了几位 没爆出来,延时不稳定没= =

    ps.好吧 被恶心到了 现在已经困如*了

  • 相关阅读:
    Docker——WIN7 安装 Docker实战与入门
    TensorFlow——dropout和正则化的相关方法
    TensorFlow——学习率衰减的使用方法
    TensorFlow——MNIST手写数据集
    TensorFlow——分布式的TensorFlow运行环境
    类加载器
    死亡的对象
    spring boot整合kafka
    Java验证手机号
    类生命周期
  • 原文地址:https://www.cnblogs.com/qing123/p/4629095.html
Copyright © 2020-2023  润新知