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

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

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

, w5 {4 f& G7 I6 H5 R, ` * }2 p) x4 ~1 Q" y

7 L! }9 C+ L5 `  u# M) k8 s7 X' H下面将以查询mysql数据库当中user()的第一位为例:
8 U; [+ c/ Q0 e; W
7 i" |/ F* l) c$ P8 n  L
1 x& M! a' y; O. i) `' U) @2 X+ I2 k' b! ~( q! t! o  P
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
6 I7 X: B- E$ M& h5 x* b/ [; H8 O- _8 i5 U' P/ W
4 @1 z; O2 j2 ~3 V. k
. [# m8 V0 K( a7 Y  X9 D
首先执行如下sql语句:
+ N; r& Z  ]8 ^# m; {9 G& W1 t) K
3 Z5 V, `. I0 z: g ; v% J5 W; {9 @' }2 P7 ?+ m$ r
  V/ z' U$ ?( R3 \7 V7 f& E
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
. q; z7 U5 y# B* h: j8 d, [! B# _  z) @* y1 o3 n9 u! e0 C  M

' e. J6 v9 K% n% I& c% M) l: H: Q# W6 _- W: C# t6 H' |
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的4 w; V, g1 @/ m; E, E8 R: A% Z. E

0 P3 s. M3 M' p & E: ?$ G& ~/ Y! Y% i: P* u
5 b) M' K; c& K& ^! K
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
& w0 R* c- P9 b5 {  b2 |. |% u0 }( G

2 [" X& [7 G7 y  n$ I: }
0 Y: Q) ?( N# G如果运算结果为1,说明第一位为0,不为18 J% D5 J3 ^- \8 f$ t- |! ]
' P+ B' H$ a2 w

8 b8 N2 Q$ I/ I$ j# M+ a8 T( T% B
+————————————–+
6 e+ k! K' V  Z% D& d. d, V2 U6 G/ I) g( s7 X
| (ascii((substr(user(),1,1))) >> 7)=0 |9 H) i  Q1 @, ~* `

9 f. C' W4 p& E9 X/ B+————————————–+
4 S% r% y! g. |$ e6 s) f! b% P; u! z4 n/ x3 d
| 1 |& C4 l7 K0 K0 [1 v+ w# Y

4 b- s, O$ K* X1 V+————————————–+1 s$ S$ g+ c! u: R7 f# U3 G
, @* S# O9 ~2 Z: Z; P9 G
1 row in set (0.00 sec)
4 G" I. a" J, g! S5 Y  Q
1 ^1 r1 r# N" s5 j这样我们就确定这个8bit的ascii的第一位为0( \5 M4 j: I# i6 H  `& L+ `, A

% H& w8 e  |- Z8 ~% _* b, q- F3 E , y' Q3 ?- W% A3 s0 f

# m" G. K0 ]$ M8 B第二次我们来做6次右偏移来确定前两位" A( ^, v: H1 Y+ Q7 B# ]5 F& i( P
  ]& J( n: b: j6 ]. P% u# F

( o2 Z3 _: s# U( f" y6 T) S7 j3 c
前两位可能是01或00,即依然可以与0做比较,
  g2 N- F* `( e) D* s) A# U, c# d7 Y7 x) f' {% F
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
7 W- X. j# Z1 t8 k& z0 ~; v0 W9 p0 k  p! w3 |3 i" Z" N2 }5 D
+————————————–++ H) b# g0 D2 X; F& i$ a0 i, J. k

; x- y9 @& n$ y+ [* m: k0 ^& W| (ascii((substr(user(),1,1))) >> 6)=0 |5 W& i' s. h7 C; J8 M+ P
9 _$ X9 _2 A1 @: k% m1 v
+————————————–+4 C* N. L$ K0 e9 g4 @* g2 b
5 O3 m6 g8 s3 g; C! W
| 0 |# @/ d( P  |% F3 _8 v

0 \7 D. ]1 T+ x( t8 q% i+————————————–+
4 w! W/ O5 \( Z1 t$ y1 b/ c1 Z! F
, O* {1 J( D" g5 S1 L  I1 row in set (0.00 sec)
9 B$ X+ E) W+ G4 u8 o. a- J6 F& S2 x+ m

& D& `& L6 A: O! G/ c8 N% |1 q, Y/ ~6 f2 t
结果为0,即第二位为1
4 _# ]. w. Y% d1 V2 ~
3 l9 P/ W. \; [5 ~4 a
. S! ~0 D1 O8 A" S  [0 D6 C; [4 P- t3 O' @* U* r# m8 R
开始猜测前三位为010或011$ g  E" D6 G+ v' ^( j8 q5 B
8 k; r' k, _# {2 p4 S5 O# k3 ^
& i" m( D1 l% u
0 U( n+ ?/ Y1 O# C2 _9 b. u
让我们看看010和011的ascii码是多少  @8 x- l) |# s' R7 }2 H: }9 Q$ C

3 R5 `, d- ]# F, c6 W7 f 7 n6 L8 H- _- t. I4 y) B/ C

0 J7 g( `/ y/ p* l, g分别查询select b’011′ select b’010′
; K* X* I: M  r2 T9 `
1 T# Y; l  `0 @8 ?0 \2 T4 B0 A 5 t+ f/ p) T5 E: g+ ?/ Y) N  U

( N9 |" I. y7 ?3 _% f获得结果 010 = 2 011 = 3/ k& Y' P0 [$ m5 V, V. l
! |+ r& f1 Q7 P7 E

5 M7 y5 C% N8 m; s; \  u" i
; H7 f+ T3 c4 c7 ^9 q! O执行如下sql:0 O/ `  c3 g" s3 C

* d( }1 M0 b( j0 K9 [. d0 D1 Z, D ' N( v; c6 @6 L' G) d+ h
2 V$ m! a# Y$ n. H
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
9 R6 ~) u2 E2 _! A! i# H& b
1 Y( X) T" ~8 e6 T% l+————————————–++ T, j& X, ]& O. P

, ~" u9 O  T9 L| (ascii((substr(user(),1,1))) >> 5)=2 |% @  r1 L9 x, O& d9 Z: \" l: E3 Z
% b* ~7 i, ]/ M+ y) O7 ^
+————————————–+
7 _# O- E/ K, O8 j3 d( O% u! w$ J
/ O. U5 I* p9 ^! e" A6 T' f| 0 |' k5 L) H* {/ i( a2 {+ m% \) j7 ^
6 p/ o) Y# {) y7 m
+————————————–+" @5 ?0 A' D) @/ o7 w5 M; h
2 v6 i: [  @3 K6 e- j" U5 z" s: p
即前三位不为010,而是0118 M+ X9 f: Y4 c* ?

3 }. c: k5 M1 o" Y( j 0 y/ m( i& P# [3 V3 ]) T* g: `% _
7 ~* q9 w. k' G/ u
直到获得最后一位- R* R& {# `9 _. O& k

( O  Q  P1 }0 W! C  z/ s$ W
6 Z  h# C* F+ h" u: e6 {( ^: n0 s+ n$ s" u* [" F3 m8 {
最终结果为:01110010/ ~' X' |8 D. g, R5 u$ F
8 T  b9 c- |' s4 p( W
; V6 Z! d/ P& I

+ M  k$ g  e, L转换一下:& L' `, z5 R. m7 m6 j8 l, |- X% j

. ]2 Y  r2 P/ x: D/ o& B 4 \0 r! Q2 ?$ S

1 _* C  e; `. O2 j! I0 qselect b’01110010′
- z. _) U' X% y2 I3 ~0 U7 w' \* z, i' @3 n8 z: i

$ q5 ^+ J% O3 k" |: L$ @# [- Y, v( j8 }6 P
查询结果( m, I1 v$ r) T2 |2 w* t

6 p3 `" x# t) a
9 Y( u& t' o, U: x! h: M" X0 h7 ]; Z: D' Q1 F
+————-+/ ], m* L. k' `7 y

" o. Z* z4 W' A! @6 O" }2 @  ~5 q| b’01110010′ |; ^! R2 l; h* ?! w: s8 q7 P! C9 ]' U

2 D5 ^. {  m2 @! ?' ]4 X+————-+
9 k) S* V+ i4 H% Q& X. a
3 L) k) b+ v  O- j# I( B( {| r |
7 ^, t9 V  j; c4 X& T* G8 c9 B4 T7 f9 ~% f/ n0 U" o# |
+————-+# q. H! ^$ K3 }: \* |# |5 X
# n6 S- U9 w0 O- H, N" H: u
1 row in set (0.00 sec)
0 Q3 D: r) k0 ]8 S* u9 M1 }2 L/ b9 v5 g$ O6 K/ X$ C# |/ S

$ n8 c2 W' x$ `3 E# _2 Q: H5 x, E2 e. U
这样我们就获得了user()的第一位.其它位依此类推
: I( y( w- d; j; a( e
) v. u5 X, ?6 K4 B2 E& B) T& }5 I
回复

使用道具 举报

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

本版积分规则

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