探测MSSQL盲注中的版本探测技术(mssql 盲注 版本)

SQL盲注是指不知道MSSQL的结构和数据,通过编写一些特殊的SQL语句去查询并获取服务器上的信息,从而实现MSSQL盲注攻击。下面将介绍如何通过版本探测技术来检测MSSQL盲注中的版本信息。

第一步:通过错误信息检测目标MSSQL的版本

可以使用如下错误信息来判断目标MSSQL的版本:

SQL Server 2000:错误分别可能为:”客户机获取的日期格式不正确”、”客户端的游标不被支持”、”客户端的结果集尺寸不被支持”

SQL Server 2005:错误信息为:”嵌套读请求只在打开游标时返回结果”

SQL Server 2008:错误信息为:”Unable to cast objects of type ‘System.String’ to type ‘System.Data.SqlTypes.SqlInt32’.”

第二步:使用 coalesce函数 来检测MSSQL盲注中的版本

COALESCE 函数是一个可以接受任意数量参数并返回第一个不为NULL值的参数,该函数在sqlserver2005 引入,所以我们可以通过使用COALESCE函数来检测MSSQL盲注中的版本。例如:

SELECT COALESCE(DB_ID(‘master’), 0);

//如果MSSQL的版本大于2005,将会返回1;否则,将会返回0

第三步:使用sys.db_features表来测试MSSQL盲注中的版本

使用sys.db_features表可以检测MSSQL的版本信息,也可以检测其他的功能是否可用:

SELECT FEATURE_NAME FROM sys.db_features WHERE feature_name IN (‘Database_Upgrade_Transact_SQLAccess’, ‘Database_Upgrade_Analysis_Services’ );

//如果不返回任何记录,则version 为2005;如果返回任何一条记录,则版本高于2005。


数据运维技术 » 探测MSSQL盲注中的版本探测技术(mssql 盲注 版本)