探测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。