CVE:CVE-2001-0542
CNNVD:CNNVD-200112-115
Microsoft SQL Server是Microsoft公司开发的Windows平台下的SQL服务器。
Microsoft SQL Server存在多个溢出漏洞，可以使攻击者通过构造特殊的SQL请求在服务器上以服务器程序进程的权限执行代码或者使服务器程序崩溃。
在SQL Server 7.0/2000以及MSDE中提供的RAISERROR语句，发现存在一个缓冲溢出问题。
RAISERROR提供了返回用户定义错误及将@@error变量设置成用户定义错误号的能力。错误消息可以被动态地建立，或者基于错误号从"sysmessages"表中检索到。一旦出现了错误，错误就会以一种服务器错误消息的方式返回到客户机。RAISERROR的语法：
RAISERROR (msg_id | msg_str， severity， state
[， argument ][，…n]])
[WITH options]
Msg_id指明用户定义消息的id，该消息存储在"sysmessages"系统表中。
Msg_str用于动态创建消息的消息字符串。这与C语言中的"printf"非常相似。
Severity定义用户赋值的错误消息严重程度。
State是从1到127的任意整数值，它表示错误的调用状态信息。负数的state值将缺省为1。
OPTIONS指明错误的定制选项。OPTIONS的有效值如下：
1)  LOG。
将错误记录到服务器错误日志和NT事件日志中。该选项需要消息带有从19到25的严重程度。而只有系统管理员才能发出这种消息。
2)  NOWAIT。
将消息立即发送到客户端服务器。
3)  SETERROR。
不管其严重级别如何，将@@error的值设置为msg_id或5000。
当传递给RAISERROR一个相当长的参数时会触发一个溢出，可能导致入侵者获得local system权限。
solution:Upgrade microsoft sql_server to a higher version than 7.0,2000,and avoid the version 7.0,2000