找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2316|回复: 0
打印 上一主题 下一主题

关于通过对8bit的ascii做右位移提高mysql盲注效率

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位/ H, B, b0 I3 U( t  t$ d! H

- N4 c9 E/ c) f! U8 ^; } $ T" A8 N5 N! l8 W/ r
+ l' |5 G* _& M1 r. R- O1 U
下面将以查询mysql数据库当中user()的第一位为例:
% x5 |/ _! H- Q1 Z& ]" X4 f9 k: ~4 m+ e7 ]6 F! j
( }% k! }& Q5 X: O$ e4 J
8 I, O- W4 V5 ^( P) M( n+ d
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)8 d! Y. l6 {. h. a- @
+ ~. L1 w3 Q; V
+ S' r% l# {5 @7 ~

* b# x0 s" e' H! c7 h6 m8 U+ w8 d首先执行如下sql语句:
) q* W! I. n+ f1 _; G4 D/ o% [/ p; O' D% ?4 O' F; L

8 x8 P9 p5 V0 e( h3 \4 K
  g: C8 B5 P/ I( Mmysql> select (ascii((substr(user(),1,1))) >> 7)=0;
5 p) |3 s8 b3 R! S/ A: N& e0 Y2 \# f, }& j0 i- r% E5 t

. m9 G7 i: C$ }  v$ n3 \% F* Y8 h; [% T8 |; S
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
1 A" X& P; a0 q  d2 z# w$ v7 I6 Z

- }6 I  }* c7 z' X2 [) G. F  v4 ^  c% W- m
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1( S" M# J; H- P
- f% I' |; T9 G* o2 J

/ I. w% l$ F. O* f0 D# ^1 \
3 I+ X1 G/ B: y" h9 s3 k2 a5 j如果运算结果为1,说明第一位为0,不为1
- F% k) h) P) ^6 C# x
  u' V% V/ x: \, C, s, I : v% r! ?$ B* g2 i

1 a; z& ]4 w$ @1 C/ x, \+————————————–+& |9 _" s& L0 V9 [: d

: }0 M. R( G6 _2 I| (ascii((substr(user(),1,1))) >> 7)=0 |$ M0 g/ k' g5 z7 l, V1 r

; g& T9 K/ _5 K. m7 J+————————————–+& h  c* P/ E, z

0 S. F; P6 O2 q4 x| 1 |
5 U: _# h5 F8 z% k2 G4 h) ^# t3 @' A' v
+————————————–+
. x% v) s# W% Q% G- k
$ B( [6 a6 b( U. o; @5 K1 row in set (0.00 sec)
5 D+ j9 F+ z" b0 P9 d5 s
  H4 G+ p* K. t7 }9 S这样我们就确定这个8bit的ascii的第一位为0
! ]( m' A# e" D. K' F: R6 Y4 n0 O: p6 u% G# o  o7 o

( [$ z5 }; l. P1 U2 O$ |/ P3 L
: t5 Z) F! S  K3 `/ _' V第二次我们来做6次右偏移来确定前两位
4 K9 O; I0 a1 \# Y6 K( M
# g" s6 {4 ]1 [, K. A1 v0 I
$ I3 G- y0 L/ k! ?! ^) y- U3 G7 j7 Q, I/ T2 ?2 b+ }; r6 m2 e
前两位可能是01或00,即依然可以与0做比较,7 ~" ~6 d  g$ b2 `4 J' `% z1 s0 l

& k% z0 P3 p+ x/ dmysql> select (ascii((substr(user(),1,1))) >> 6)=0;
( [; X2 {+ Z, J8 H$ q! j
3 o: C0 h- F( m: Z% m; t! I+————————————–+4 |* T/ T# D/ c( t, Q9 M. Y: p/ `
  i/ ~' m# A& ~% G* r$ S
| (ascii((substr(user(),1,1))) >> 6)=0 |
; o4 h6 f' n* B7 a' P4 L& e7 ]2 i
$ v  E+ y. B) X( j  m: f+————————————–+$ |$ W( n( n( L; L0 y; E5 P- V
( B) A% X; t; m# l
| 0 |* v* n/ c2 H: E" P1 K& i3 a; L! T
9 E7 t8 f4 B0 m) P8 O9 I# w6 Q
+————————————–+' J. f( {" p' X4 a3 J, Q" e* H

6 ^9 D4 ^  ?# z- M- C$ x1 row in set (0.00 sec)
$ R% ]2 G' v- ~( {: [5 r
, H3 L3 Y! s8 T4 ?- D 2 |: ?% G) G% ^

: M  B3 ], e( x$ T4 V( `结果为0,即第二位为1$ a  e" W, u" Y* u# h7 x# V  E
/ D/ @. [: q5 t

' n% e' k5 {9 U6 n" s% g
; X/ A. m9 p. I/ ]! m开始猜测前三位为010或0110 {# \8 F0 ?  l! i% T. X5 G
3 p. ~/ Z" {8 Q1 y7 y# d
7 T! `; H/ s- p7 u* W2 X
% F9 ^( n2 K% v+ t) i, n! e
让我们看看010和011的ascii码是多少
9 r7 K" E1 ]- E4 x5 v8 O
8 D4 e& L' e, x* U+ u8 @* j ( [* J. Q# v% f4 R

( |9 k# ^" a. N+ h; A, L分别查询select b’011′ select b’010′' Y9 m  O& o# B4 _
( o; n9 B: |. W7 h) U& O

1 b0 w2 T& C& E" a! b9 J; P( H! o) f' F4 |4 N* \
获得结果 010 = 2 011 = 3. j! J, n  [# n7 b
1 G! e# B4 x7 P" S, X

% @& l% C9 R2 x7 r/ E( O. H5 M3 ~% j. a2 v. O  \
执行如下sql:
: S% |! d& |5 \6 ^& k) Z1 s% E
8 a. s2 u% Y0 M  K & `" L: M( p" _4 V1 u) Z% C9 e
2 _/ i: g# ]/ X# G, s/ M8 U6 Y+ u
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;: I3 }( P7 c: a# ?1 Y9 p

/ w- O3 V) U) w3 }% i+————————————–+
0 g( }7 V! b0 l6 X5 i4 Q; b6 `/ v. D
| (ascii((substr(user(),1,1))) >> 5)=2 |. `. K5 R( H2 I+ s) v

; t. V; e* @" v( p3 K# `/ M, J+————————————–+5 u2 s, B. T! H( K
5 U; q4 z4 N# E, H& u+ h6 g
| 0 |
7 N6 U/ v/ p" C, W) U2 C: T, b1 s3 R. ^9 N3 ?# ]
+————————————–+8 B! ^, q  c9 I& F

1 j, Q, }; e5 o( y( j! w  _6 V3 c即前三位不为010,而是011* j- w4 S: R2 W+ |$ K
. e0 x3 D& f  g. S& d, T

) Q8 Z4 k1 n0 X# g4 z
7 z! h! E% [/ z% s6 R直到获得最后一位& y7 W5 T  o5 Y' b1 Y* r

, G' s) }5 n7 |  |# N  K& q   X, K1 S5 |* D4 t% l
  X) p1 T8 R9 D  S( Z! u+ }
最终结果为:01110010
! Y$ I/ ?3 e* O9 u/ V
1 q( T" C' b( n; y# O4 I% f
! L8 D2 a' [! l2 |3 e# P
- w* P$ g1 {1 _; X) a转换一下:
2 H8 z0 H! G5 n" [) W+ S- l: p- j. ?6 u9 ]' s5 y9 L+ Y

7 @) B  Z: ^# P0 U1 F8 Q' K3 w9 a# @. c% k' O- {3 k
select b’01110010′. m* H: ?- O8 Z* K& g, f

' ?6 H# u# Z5 |0 s: O% p* L. Z
, k9 o+ D4 _3 x) y& C) R! {+ o( ^' F2 D4 e6 r% v' e
查询结果% \- r. H& t" `. v4 g
  V& J; X, [3 I

3 `  }+ }* c# t6 H8 F2 b( d5 C! s" x1 i
+————-+
- }3 o( u- a$ m. t0 S! y" k
9 D0 o/ E% a% C+ d+ N$ Y$ q| b’01110010′ |
# m/ s& b  x' X* d% P) a# X
( E- a6 P1 W+ Q7 S+————-+
2 W; }, Y7 v! I& m
; M1 U# j4 i* u  @6 J- T| r |7 H8 h$ ]) u0 S( V

6 s& z' d  Q( Z: B* I  T/ h7 _+————-+
: B/ I- K: Q9 h5 P3 H( l! U6 {+ v7 ]4 ~
1 row in set (0.00 sec)
1 I4 S! i+ [8 @- b
3 L' v% T) t; W- q" j- A
' ?( v+ f" m& m- Z( J
2 P7 h6 h. e6 ?/ D! l3 N' m这样我们就获得了user()的第一位.其它位依此类推
- ?/ ~1 j. V; @
% l- ~) J9 a% B7 h' R6 f7 F& ^
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表