探测MSSQL盲注中的版本探测技术

1. 概述

对于MSSQL数据库,盲注是一种比较常见的攻击方式,其中一个重要的步骤就是探测数据库的版本信息。正确的数据库版本信息可以帮助攻击者针对性地利用相关漏洞,提高攻击成功率。本文将介绍在MSSQL盲注中常用的版本探测技术。

2. 基于ERROR信息的版本探测

2.1 原理

通过发送SQL语句触发MSSQL数据库产生逻辑错误,进而获取ERROR信息,通过分析ERROR信息中的一些关键字、提示信息等特征,可以推断出MSSQL的版本信息。这种方式比较简单粗暴,但对于较老版本的MSSQL或者一些特殊定制版本的MSSQL有可能会有误判。

2.2 实现

攻击者可以通过在SQL语句中故意出错来触发ERROR信息,类似如下写法:

SELECT * FROM a' OR 1=1--

这里将单引号缺失,造成语法错误,从而触发ERROR信息。常见的ERROR信息和MSSQL版本的对应关系如下表所示:

ERROR信息 版本
...Microsoft SQL Server Native Client... 2005
...OLE DB Provider for SQL Server... 2000
...[Microsoft][ODBC SQL Server Driver]... 7

3. 基于SERVERPROPERTY函数的版本探测

3.1 原理

SERVERPROPERTY是MSSQL提供的一个函数,可以用于查询数据库实例和版本信息。攻击者可以通过执行如下SQL语句,获取MSSQL的版本信息:

SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

其中productversion表示版本号,由四段数字组成;productlevel表示补丁程序的级别;edition表示MSSQL的版本,例如“Enterprise Edition”等。

3.2 实现

攻击者可以通过在注入的SQL语句中增加SERVERPROPERTY函数来获取版本信息,具体写法如下:

SELECT @@version;

执行以上SQL语句即可得到类似如下信息:

------------------------------------------------------------------------

Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64)

Oct 20 2015 15:36:27

Copyright (c)

Microsoft Corporation

Enterprise Edition (64-bit) on Windows NT 6.3 (Build 9600: ) (Hypervisor)

(1 row(s) affected)

其中粗体部分就是MSSQL的版本信息,可以通过正则表达式或字符串处理来提取。

4. 基于数据库信息表的版本探测

4.1 原理

系统表sys.databases可以提供关于所有数据库的信息,包括数据库的ID、名称、创建时间、状态等。攻击者可以通过读取sys.databases表来获取MSSQL的版本信息。

4.2 实现

攻击者可以通过如下SQL语句读取sys.databases表中的信息来获取版本信息:

SELECT name, compatibility_level FROM sys.databases WHERE name=NULL

其中name表示数据库名称,compatibility_level表示MSSQL的版本。常见的compatibility_level与MSSQL版本的对应关系如下表所示:

compatibility_level 版本
80 2000
90 2005
100 2008
110 2012
120 2014
130 2016
140 2017

5. 总结

以上介绍了MSSQL盲注中常用的版本探测技术,包括基于ERROR信息、基于SERVERPROPERTY函数、以及基于数据库信息表等方式。攻击者可以根据需要选择适合自己的版本探测方式,在获取到正确的版本信息后再进一步进行攻击。同时,MSSQL也不断地更新升级,攻击者需要时刻关注最新版本的MSSQL及其相关漏洞,以便更好地实施攻击。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签