[摘要]------------------------------------------------------------------- 其中TOKEN字段域1个字节,用来表示TDS操作请求种类。在这...
-------------------------------------------------------------------
其中TOKEN字段域1个字节,用来表示TDS操作请求种类。在这个漏洞中是0x12,也就是NFR记录中的有效负载中的第一个字节0x12, 0x12是预登录验证命令请求。其目的是获得当前MS SQL SERVER2000的一些设置值,比如SQL SERVER版本,是否支持加密等信息,作为客户端在构造TDS包的一个依据。SQL Server在接受到该类型的包的时候,将会由SSlibnet.dll中的相应函数做处理,在我的系统SQL Server 2000(没有SP)的情况下,相应函数如下:
.text:42CF6DDD ; Attributes: bp-based frame
.text:42CF6DDD
.text:42CF6DDD public ConnectionPreLogin
.text:42CF6DDD ConnectionPreLogin proc near
.text:42CF6DDD
.text:42CF6DDD var_4 = dword ptr -4
.text:42CF6DDD arg_0 = dword ptr 8
.text:42CF6DDD arg_4 = dword ptr 0Ch
.text:42CF6DDD arg_8 = dword ptr 10h
.text:42CF6DDD arg_C = dword ptr 14h
.text:42CF6DDD arg_10 = dword ptr 18h
.text:42CF6DDD
.text:42CF6DDD push ebp
.text:42CF6DDE mov ebp, esp
.text:42CF6DE0 push ecx
.text:42CF6DE1 mov eax, [ebp+arg_0]
.text:42CF6DE4 mov ecx, [eax+94h]
.text:42CF6DEA mov [ebp+var_4], ecx
.text:42CF6DED cmp [ebp+var_4], 1
.text:42CF6DF1 jz short loc_42CF6E01
.text:42CF6DF3 cmp [ebp+var_4], 1
.text:42CF6DF7 jle short loc_42CF6E3D
.text:42CF6DF9 cmp [ebp+var_4], 3
……
STATUS字段域1个字节,当它为0x01的时候表示此包为当前TDS会话中的最后一个TDS包。
LENGTH字段域2个字节,表示TDS包的总长度,包括TDS包头的长度。
SIGNED NUM字段域2个字节,目前保留未用。
PACKET NUM字段域1个字节,表示此TDS包在当前TDS操作请求中的序号
WINDOW SIZE字段域1个字节,目前保留未用。
MS SQL SERVER 0X12 TDS的包主要包格式如下:
------------------------------------------------------
关键词:优化NFR之一 --MSSQL Hello Buffer Overflow