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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位! g. ?6 x& d! t; D" @3 k

6 D  u" o( n0 t! e7 K
9 s1 J  I* u: \2 y3 R& t' S" V
下面将以查询mysql数据库当中user()的第一位为例:2 S' Z6 A$ N4 N4 ]- g4 o8 Z) \: P4 o
+ `5 |' [' z- P- m+ Z% p

# H7 v. G2 o. j- q; y4 x- Q3 C7 w, h2 K/ B
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1), \# @8 X( _& l
8 X) S& o% I1 i2 R' S* `( L

1 K5 D, x& K! @0 u
  I$ F* v) ^/ e* h首先执行如下sql语句:
% _6 Y% h/ O' _& P' C' D1 z! M$ v+ d( R+ F( `: d6 D

4 L; l* u# O* N; x
: W3 `6 H% ^% J" b' e" `1 o5 S; qmysql> select (ascii((substr(user(),1,1))) >> 7)=0;
3 a) \& o) h/ a* z6 o
) j6 z; G8 S& A" f( m ) F9 L) Q' b" d: p
. ~: h6 T* J  S7 ~* J
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的" L7 L5 L! q* J

' F, u# ?& J3 f& d- \/ n& S8 H
6 v3 a& }8 l1 _. q+ f
" q1 Z, Y! V/ @) F5 M第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
3 O, Z4 A  k  ~
- |; C7 p8 L! P7 A
1 s0 O" |3 Y2 y3 ^$ L0 M
, G% q2 G" ?, m. B) R3 Q0 a/ Z如果运算结果为1,说明第一位为0,不为1& C1 S) v) H6 H" V
: O/ @. o& Y: f* X
/ I* Q/ f  Q9 L) h4 v
( ?4 \, C% Z0 X4 e0 Z) b
+————————————–+" t% I8 m+ i& s: [& m  j( Q" E2 z

0 w/ {8 A& E# C# A  m# ]7 [| (ascii((substr(user(),1,1))) >> 7)=0 |) @# S- q; z8 n$ k% F( V* N+ V! j

2 c5 r% h* ~! |/ a+————————————–+
4 {; s& D: U% V$ s  }/ ]. H7 _: U  G9 X# L5 {# X9 k; Y
| 1 |1 _7 h: Q4 E) ^! M; B. l5 d
; @7 y$ J3 d' L& N6 K; ]& I
+————————————–+
" A% x1 e; N; J* i' V& x0 W. B4 t' K0 c8 ~+ [
1 row in set (0.00 sec)0 {- W* P3 v3 }6 Q6 m% b

" r: k; w* r% Y这样我们就确定这个8bit的ascii的第一位为02 |9 D- B1 h0 J9 [  E; Z

" |3 x5 P; ?! h. s( s8 q0 A* O. J 8 D  N, |4 L$ j9 O2 r
. Y3 ~/ i9 e. H* r4 O( ^2 C! r
第二次我们来做6次右偏移来确定前两位
4 [$ Y" s6 X, |2 u- N! e
# F& {! M! J$ v1 w5 x
4 w5 u4 q: b& [& Y
3 f6 }( |+ B9 d- V前两位可能是01或00,即依然可以与0做比较," [! O% ?& g6 `
& A% f( ?3 W: a% K2 d' ]. N
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
: ^" N. P2 z5 F! {# _+ ]1 ^1 U7 `5 ]: ]4 O* I, J
+————————————–+
' `% v7 v2 x7 s9 n$ w7 G$ x$ A- b  m# L% \% }7 h4 E( H& H! _9 o
| (ascii((substr(user(),1,1))) >> 6)=0 |9 _2 R/ B& U1 E0 f$ p5 p
: f: Y6 M4 ?7 C; r+ P6 I
+————————————–+% i0 z+ P' E) T$ h* M: b- a

! G& U% a  h' x1 a* E* ^| 0 |) b( I  R" J/ c' r

, l* d' F, }6 o3 p% |+————————————–+
  t# l6 Q2 v2 V4 |" a) ~3 a& v! w( c5 q6 X" J5 S& W
1 row in set (0.00 sec)
! H3 }2 J: ^2 b% F# f$ D, u  Y# g% \5 o4 k" t3 L

8 S( f2 L  e. \8 v2 v- n/ a
1 ]8 S/ I! b# i0 ~$ V/ x1 ?+ {# {结果为0,即第二位为1  b! J4 N" Q3 H9 }$ G- o
; R1 M& X9 V" v. ^0 ]+ @9 l
$ J  o* w: M5 H  k/ L0 ]

# A  y8 v2 P! H: w! @开始猜测前三位为010或011
9 a/ m% T9 X+ K3 O! L" M" b# ~: P) a5 \. U) P

1 Y" v) v% G( k, A1 `* U7 M! V" _, {' N- b  I3 g
让我们看看010和011的ascii码是多少$ `: l# a4 a$ N
4 E! J* u( c/ t5 W+ ^3 n1 Z) j

# {7 e6 V. v7 k' f+ R! S1 h6 T) l9 k4 ]
分别查询select b’011′ select b’010′
8 p3 C4 C& B7 v+ z3 e# D, T+ r2 g+ W) b; y# C

  ^( b3 H2 P* o: |; a& d9 F. t
9 H7 {  B) ]. H0 i" Y* A获得结果 010 = 2 011 = 3. T+ {; C! a/ A) P; ~/ g
2 {, J, x8 D- z5 W8 q
& f, s+ s0 ~9 O& K
+ Q; U; k  \8 `% w  ^
执行如下sql:. c& W. |: X1 W

7 _' K% ]5 s/ U; f4 ~! e- m# A0 W
4 O# |! F# l8 ]7 ~5 J7 U7 D( Q# ?% e( k. U
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
& B) q7 ?5 t% j( o( {' F" j: D/ a4 d2 N9 V7 h  b/ w
+————————————–+
: F, w1 B% J5 _  `
6 z" _# g3 y' G3 e0 E1 @| (ascii((substr(user(),1,1))) >> 5)=2 |+ l1 i7 p! T$ q0 i: V! l$ f0 g2 s
4 `4 y4 p$ I1 \2 M3 G. ^+ Y
+————————————–+
* x/ R) w8 k9 l. N/ h# J5 r( a' u2 i+ n; x
| 0 |- _7 d( S& A# z; D. W
# S8 M$ z' u: W: R/ i
+————————————–+
/ U- _4 |3 z3 {. t
# U. A) q" x7 B7 P( M即前三位不为010,而是011$ q3 q. o* r1 f: E0 S5 u% ~

! l2 g) d* _$ h9 s; A- A
6 c/ J; S- M" ?- A. W. O- C6 ^
- D9 F, ]3 I  t* Q直到获得最后一位
) J' i/ J9 Z, P* o2 m: v3 R# f+ T
, O. ~/ \% g7 z& B+ f 7 a7 b* J6 v2 ^# D4 @
! L! Q" f( m: i) I. O- r8 f
最终结果为:01110010
2 Z) P1 k" |) T" t$ m2 r. h0 w9 X. \7 G
3 u1 r" F" V5 P3 x
# `3 c0 e% j7 \1 A' U
转换一下:2 T- n8 u$ J+ _* W# F" `
2 t  C0 I! f1 j9 i  P. s
1 x6 _. s% x. G. k9 \
- X: j' S2 N% \9 o
select b’01110010′  |; c1 y9 P) `! m) c$ V6 A

& X1 s. L9 h7 z. h+ y( h, f+ p
) Q) v- ?5 p$ Z+ I) _9 p' u8 j8 ^- W) k  z/ r0 T
查询结果: a% a1 Y0 G7 d
# J  N- W$ A) }; F1 X

2 _/ ^. a+ A9 N  L$ g4 ?) M. m: j" z1 D9 g& \0 Z# O, L, J/ f- Q
+————-+
9 U9 G; t0 u* ]8 x  J0 N7 f: Y) t- P, y+ b9 ^0 e& Y* v
| b’01110010′ |
$ c/ W0 S" @7 c+ `6 u9 h9 B+ u/ f. _* q- q
+————-+
# o: z7 n; w) z' \+ |3 X* h: ?" o2 n) ~5 d
| r |+ O5 S7 ^: E- X
) a' z5 f7 u$ s4 p. b7 S
+————-+/ f$ \) z: w% u: O4 k1 R0 |# A8 o
4 p1 y/ A; r0 Z/ h- B, O9 J
1 row in set (0.00 sec)! K/ U6 m  p  M3 k' z. }1 @

1 g8 x  v* r7 L2 V7 I8 @% \" N/ M2 w4 X
0 h: d, ?: C5 U. M9 T. ]/ y4 I1 {  d
这样我们就获得了user()的第一位.其它位依此类推3 ?$ ]2 o6 }6 `. Z' R( P. X/ P

5 V5 j5 H% G' U* `
回复

使用道具 举报

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

本版积分规则

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