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
; 不存在