日期:2012-06-07  浏览次数:20815 次

SQL Server在1433端口传输的数据大部分是明文的,这包括IP地址,连接用户名,成功和失败消息

这样一来,就很容易使用嗅探器嗅探在这个网段内SQL Server的相关信息,得到用户名和IP后,就

差口令了,其实SQL的口令加密是十分脆弱的,昨天我用了半小时,整理了一份口令字符对照表,在

分析SQL Server加密口令的时候,同时发现了SQL Server一个不大不小的BUG----如果你用";"做口令

将导致口令失效,原因是SQL Server的口令对照表中,没有这个字符,当SQL Server遇到这个口令字

符的时候,就会主动放弃这个字符,这样一来,口令长度将与实际长度不符,当你下次连接1433的时

候,这个字符就无法被系统识别出来,从而报告口令错误。

口令对照表的用法:

1.用16进制编辑器打开你Sniff到的东西,然后找到SQL Server连接的用户名,从用户名开始后面的第

一个0x5a - 1的位置就是口令的第一位,每一位口令均以0x5a分隔开来,口令字的变换请对照口令字符

对照表:

a 0xb3
b 0x83
c 0x93
d 0xe3
e 0xf3
f 0xc3
g 0xd3
h 0x23
i 0x33
j 0x03
k 0x13
l 0x63
m 0x73
n 0x43
o 0x53
p 0xa2
q 0xb2
r 0x82
s 0x92
t 0xe2
u 0xf2
v 0xc2
w 0xd2
x 0x22
y 0x32
z 0x02
1 0xb6
2 0x86
3 0x96
4 0xe6
5 0xf6
6 0xc6
7 0xd6
8 0x26
9 0x36
0 0xa6
- 0x77
= 0x76
\ 0x60
[ 0x10
] 0x70
' 0xd7
, 0x67
. 0x47
/ 0x57
` 0xa3
! 0xb7
@ 0xa1
# 0x97
$ 0xe7
% 0xf7
^ 0x40
& 0xc7
* 0x07
( 0x27
) 0x37
A 0xb1
B 0x81
C 0x91
D 0xe1
E 0xf1
F 0xc1
G 0xd1
H 0x21
I 0x31
J 0x01
K 0x11
L 0x61
M 0x71
N 0x41
O 0x51
P 0xa0
Q 0xb0
R 0x80
S 0x90
T 0xe0
U 0xf0
V 0xc0
W 0xd0
X 0x20
Y 0x30
Z 0x00
_ 0x50
+ 0x17
| 0x62
{ 0x12
} 0x72
: 0x06
" 0x87
< 0x66
> 0x46
? 0x56
~ 0x42
; 不存在