[摘要]SQL Server在1433端口传输的数据大部分是明文的, 这包括IP地址, 连接用户名, 成功和失败消息这样一来, 就很容易使用嗅探器嗅探在这个网段内SQL Server的相关信息, 得到用户名... 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 |