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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
" M  j- U1 F: i3 @- d  z" Y1 w9 f( G% `. G" p& c2 y
2 W- g$ K- @3 Q; B8 Y: H# x/ l

2 f5 q, l; g7 u* K下面将以查询mysql数据库当中user()的第一位为例:5 v" c$ v9 F9 @' `

1 O" \; ^: w" v, D8 w& i 5 u7 l0 g  L& t$ \8 P7 O/ D
# v3 s9 @$ m* Q" r- Z9 J" S
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1): \3 _( ?+ d4 A* m$ n6 h
# O1 s' _5 T9 f6 z: a9 L- J/ q7 N

+ g8 E% G2 z; \& y* q) n
) C( A+ \! m7 F首先执行如下sql语句:  g' t5 n' u  `# l) Q
$ ]/ h7 b+ }) M3 v1 h0 L% B) ?

& R5 D5 }8 e- |3 y5 @) ]7 b1 `9 N- H3 f" B' _: m- Y6 ^5 ~
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;. H) D. i# {0 f' q& @% z

  e  P+ J, o4 J, q( {4 n 2 m/ U' \" [6 l/ C" ~) H( f

! k2 |! c  s$ r' i: {! W我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的4 B/ ~6 P6 [1 f
$ Y  ^7 L/ B  ~

* J: j9 H4 Q( ]4 c5 w( ]0 W- w) S3 O8 v6 N& Z% E2 Z
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1$ ~  ~6 R0 d8 y% q$ E) E

2 O; `" v0 I8 t# {7 {4 Z 8 R: i. u0 Y0 `% g6 X( s" ~

) Q3 y' [5 x  ]  K+ N如果运算结果为1,说明第一位为0,不为1+ `# h5 y1 |+ a$ a. y# Y- R/ x
: l6 e; E4 m  R& b

+ W7 B9 [3 N+ [( d0 e( E5 X# }5 H4 b: H5 m4 |+ Q
+————————————–+
! h& {# d8 |% @8 {) c" o. {
( |6 K7 J$ i/ d) P| (ascii((substr(user(),1,1))) >> 7)=0 |& Q) u' ^  A" r$ c

% o$ j. N! \5 y% h1 B: Z+————————————–+
, R4 Q$ B# C) j# k/ I4 X
6 R1 b& U7 Q1 |' j( Q5 O. `: J/ c| 1 |" p( h, ?+ U4 ^1 Z2 R, @1 s& l0 b

  R* x$ H( B  O9 x+————————————–+
( ?$ ~" m5 ]1 y0 |
2 b& `4 S% O, A1 row in set (0.00 sec)
& Y6 |+ s1 o( d8 a2 N9 a
. ^( q6 u, t3 ]这样我们就确定这个8bit的ascii的第一位为0
# s/ q9 E! n+ F: V# a; x7 t" u; D2 f: e2 s9 Z2 V
& P! l: Y9 F/ L* C1 v0 O
$ d+ }9 ?! ~( _% ^
第二次我们来做6次右偏移来确定前两位
! c2 T- r9 f% ]0 B2 e- R+ Q8 c2 B2 ~
, L7 p, K4 O( x2 }% y- H  u8 y' B* H8 f

$ c  H. N: M2 h, T6 A( [2 t前两位可能是01或00,即依然可以与0做比较,
# d0 a' ?  e2 k- z& C2 T; [9 ~5 I3 q& j
1 G* k  i- g9 u( {mysql> select (ascii((substr(user(),1,1))) >> 6)=0;; D6 v7 E* c+ K
; C" C! P9 {8 ~- c9 W
+————————————–+$ ]" K# }3 [" x  n
6 C+ X1 M# C7 c. x
| (ascii((substr(user(),1,1))) >> 6)=0 |; b6 }# D4 n" h6 B

9 A; D3 m( N  R+————————————–+
2 d9 T* @3 M6 @& d" h  p
8 B. b# D$ D# q( h0 d0 O| 0 |
0 I9 z, s4 T; ?" Z3 D0 V& @
- d5 F9 h# y/ o( k% |+————————————–+5 n. @* T  ^: F

) h$ x$ [) C) P1 U1 k# a5 P) ?1 row in set (0.00 sec)
2 h# I9 W: U5 i1 k( @4 D* a; w9 k! L. F3 x' x9 b( M

$ t3 i- z4 j  T# z) f( n4 N; Y/ @/ x9 i# h
结果为0,即第二位为10 v8 z" Y6 e( a" }; h& J: S$ D

; D: c' ~6 g: {9 A3 g8 N( ~3 \ ( k4 T6 A- z% e, E) n$ V  E
  s& L- ~% }+ g- q, z8 J: ~
开始猜测前三位为010或011" L8 H8 a$ B  ~3 `8 V; |% F7 L
7 O8 x7 B+ y, X5 X# O
7 l' W; q' `/ l  W
+ y4 W7 A8 Z% n7 W) ^
让我们看看010和011的ascii码是多少0 L6 S, w- f8 ~* \. ?
3 u7 }% Q8 u* ]8 f4 W% f
+ k- O" P5 H; g6 n* A# W. {, D
0 s/ O& U( l" k
分别查询select b’011′ select b’010′1 _3 J# H+ A$ g( U2 [
9 E. r, h9 {+ A+ e% r6 e4 H

' e7 x. [! e1 m, g: Y7 Y
# X7 X: Q) n$ ]7 {! B* Z获得结果 010 = 2 011 = 3& l6 ]  `. ^' o* E: o$ }6 w! M, G

: ~6 q2 A& w; i- {! t8 r/ t * I: {+ V1 B: z$ r6 O6 ~& F
2 A8 B5 L3 V" J) \: V( Q
执行如下sql:
0 E% r6 J) W( e( A8 B
$ }0 J4 j. _: J, e( y. W
& ~8 q( a# H; `) N. P) J6 u! n' t4 b: _" g
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;$ k: X- F( \+ C; i' l! O
. p& H4 y( d7 x; i$ {; a
+————————————–++ G+ _' n/ y- E4 s$ X( X# E
5 |$ ~) E; r2 [/ y# ^- d$ Z
| (ascii((substr(user(),1,1))) >> 5)=2 |* h  X. v8 w* ^1 Q8 E3 l
+ V$ l! T3 |- c) a  D
+————————————–+
/ ~8 D2 e2 ]/ C# r# G4 ~) _5 o! x+ F) d/ b; S. E
| 0 |9 R* U- A& K8 H8 Y
' U% M; n$ \+ R( z2 C; `- K. s
+————————————–+
7 c. y: a9 s8 {" f7 Q& i, h- d, M$ @4 Y4 G* I. f9 f3 g  W" l$ L
即前三位不为010,而是011
; M7 `5 F+ j9 V; r) e! E
/ t! ~5 i# M8 }$ e7 Y$ O5 B0 X
9 v. J! O$ r- G; L6 @; Z$ d
$ Y3 l) G) A$ O1 w1 r3 J+ N- _直到获得最后一位$ j6 v1 T1 x6 @
) `8 j3 }- j4 i( A+ f* B
: X# W2 s, d- X; ^' W

2 g, q( ]: [7 c7 A% M' L% s最终结果为:01110010! i: N, w0 r# c$ n  M& w& U: z
! p* T5 e% V6 Q, ~: ]! v

2 w) G7 m* c: \, W4 `' X! R
9 [  N+ q: Q- r  ]& c/ l( t转换一下:7 m; _1 @& |( _6 `' Y. {

' S8 p0 `* A$ o3 Z' V, V+ I2 X ( u7 E/ L0 c8 Z8 N! p( e+ g* b8 L

8 d0 W2 ^+ b7 {  k. Yselect b’01110010′5 ]% t( z( u3 B* @$ ~  N# C
8 G2 {) S; P& A, ~7 ?
+ g% ]$ @! _0 T% u$ Y! l% a. _

! E4 ?8 ]" f- \; {查询结果: X* b0 ~* [  {
% q- q% P( r. J, @7 ]7 z7 ?; B+ F8 E& b
% D, O+ I+ ?3 @5 V, C- v+ j
' X% f, s6 \& s* v/ O  A
+————-+
2 f" H8 {; H0 g$ G2 k$ Q" E" U* p* a1 G3 w+ i* k; ?, n
| b’01110010′ |) N6 @, R9 o6 M5 N6 _! C

- O: `* @' O; r5 l+————-+
; {  H" }( j% @+ W6 x! j2 K/ Q) ^, P) M3 }
| r |  g" v/ I) w9 z, J- V8 E" H: [
/ H& W% N8 }2 P* [
+————-+6 Z" m0 Q; F1 u' u* T

& h- O  M* i: S. f9 \6 `5 O1 row in set (0.00 sec)+ c1 ~( a6 s8 `+ j; ^
/ I% e3 }  o1 o2 w$ J0 K
2 h1 H& w4 y5 ]$ h$ ~% ^
, ~1 H1 v$ E8 ]& v/ n) E, J
这样我们就获得了user()的第一位.其它位依此类推
' y+ [* ~& A8 N0 |7 M0 P  L
( G2 [& ~  o9 X: @) L& t" d
回复

使用道具 举报

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

本版积分规则

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