找回密码
 立即注册
查看: 2781|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
7 Y( X7 Y1 D5 Y2 s6 P9 c4 T( g
# U0 V1 c6 q1 Y1 T& u2 J$ j0 {1 E / U0 h6 r7 {! U; g* \/ W' E- N
5 ~" ^" }* X, p. g( `! Y: z
下面将以查询mysql数据库当中user()的第一位为例:/ n& R5 B1 P0 G" e8 K

1 a3 }) s0 Z1 q3 p5 `8 }
9 @- R9 C* W  c) l# F+ Y1 R9 D9 ?( b. ^! w- K- c
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1). h: Z, p/ _1 D) U
! l* l9 ?6 r( H4 X

0 r8 {! G) c  B$ u. _$ R" ]3 g; |. {$ H* p
首先执行如下sql语句:* y& V) A% d; K& J9 k
( ^3 T6 V) Z. M; d
/ I% P6 I, G/ ~; i' D- h4 L

' ~, E, x" c, gmysql> select (ascii((substr(user(),1,1))) >> 7)=0;
! w' c1 q5 M4 F
9 F# ^% s* I2 |
: M6 v: _' ~/ K1 k% U; n+ j3 L# z+ ]0 ^6 q
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的- K' X) ?9 d/ R, x/ H! ]' k  _

4 r0 {0 h8 b' X* y" [! P- { ( g' G! ~' k- M( W$ ~& r

& B+ d* H# j. h9 n: b5 m* X& I! ]( p第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1) g& b" e/ ^: e& k6 a8 D# g
  Y7 H/ S% P5 N3 u
5 e( w! R( T- }& V  F

% Q) Q+ ~8 Z8 e* G2 ^3 T" a. F如果运算结果为1,说明第一位为0,不为1
; W8 Y$ E2 @0 Q# y# m: Q
' r4 t1 ?4 R8 [3 H2 A; j  P : O8 ?: Y' c9 B0 X. @' J0 y

( S' p$ D+ W( N& I+————————————–+7 m5 z6 x* O% G0 p) X* o
6 @  [" l# j5 x% V3 k/ a
| (ascii((substr(user(),1,1))) >> 7)=0 |2 z  t, D" \" f, T3 ]  W& s
7 W- C% V0 n" ?+ f. h- R5 @
+————————————–+* r, S, [0 z) g. M; L

& j) \# t( F7 n5 Q| 1 |& R1 Q8 W# Y7 h  u; d9 P: N
0 M6 z0 A3 b7 [9 Z$ s9 K& N
+————————————–+
& Z' o& A, K2 H3 h0 V% V( @/ X
$ V7 c: G3 p& B9 N( V$ X1 row in set (0.00 sec)
: l$ H$ h1 L/ p: m  j" F* F; k% ^5 j* C: W/ Z& B" x$ n) w
这样我们就确定这个8bit的ascii的第一位为0
/ p. W8 W" {, `/ h* y# y
% a7 l! c) ^0 J% ^: {1 ^
6 t3 T( U3 L6 W3 G- l7 p9 i& _: t# H" }$ @; R& T
第二次我们来做6次右偏移来确定前两位
# D) i- K5 Y( Q1 ^; g
# h) a) w0 S, y, l) O; H
2 A2 r  R  K: [& e/ f) J
1 \  S3 X2 R6 B! C8 [  F前两位可能是01或00,即依然可以与0做比较,: @( L2 n( D' p9 U

$ I  r  I3 X3 J4 j/ Q+ Z" Z# Wmysql> select (ascii((substr(user(),1,1))) >> 6)=0;
) ~% p2 Q: B$ N, l. C: E6 s# i. y0 A' u8 p
+————————————–+
! z" Z: H2 G4 A
# \5 @# O9 }+ G1 N| (ascii((substr(user(),1,1))) >> 6)=0 |
$ [4 Q5 t) C$ Q: s" Y+ z1 {% Z9 o+ }: J9 Q% y1 D6 z
+————————————–+
8 m2 C/ U! K, d8 B; F+ O
2 ]6 V* d# U9 N| 0 |
" p" E; r+ Q; v& w! g/ g; G
& ]6 |. N" _! F9 G+————————————–+7 w. D$ f: R4 [% r$ F
" C# ^. M  W$ B2 u8 Q0 H" k; S
1 row in set (0.00 sec)
/ _4 A% a: t( K/ q7 Y' I3 v% q2 Y

7 Q. z) b: H4 j8 L/ X; p& I0 ?
6 W/ i* S. [1 F+ u) W2 |5 Q结果为0,即第二位为1
' A4 Z7 U1 {) T" X( R1 Q3 H5 B! f' x! d/ x/ n

* N2 E4 {$ g$ K$ y/ h5 {. k0 N% W1 C7 m/ F
开始猜测前三位为010或011
+ L" |4 X4 K6 Y  [9 F2 I
. t% H, g2 `' B: q' X& ~& k! Z7 d
- N+ ?. W% u0 [) l6 h9 Q$ t0 }3 N1 Q' |* O9 Z; J
让我们看看010和011的ascii码是多少
! p5 d6 L( N% v& U
$ A- e6 x. `& c4 B% }  C 0 n! [; x; S& h, G0 ^
8 W. f$ w$ j. ^9 T( }. ~/ G
分别查询select b’011′ select b’010′9 _! y2 S! p1 u* H/ E4 J
0 g( w( l% g: f4 Q
* }- y+ c0 P# y  `  P

: |  z  `' N3 ~" U4 \2 ~获得结果 010 = 2 011 = 3; \: T" i# ]- ?  d4 C) y9 s
+ W# G3 M% f7 }7 |3 O$ `
( e% W" ~0 W; s; z
- }- Z2 d- T! J
执行如下sql:
4 G6 l" H8 A! ?$ V3 t4 q5 ~5 a0 r2 l! H% \9 Z& I+ H

* o" t. }! a$ C2 \, \
, Z! l- \7 D1 g( z0 ?/ Tmysql> select (ascii((substr(user(),1,1))) >> 5)=2;) [5 x# m" p# p) }

% L1 m# o! n* ]+ B, E+————————————–+1 D, w: `# d8 z* K

1 a8 [7 D7 E$ l/ Q% p0 `| (ascii((substr(user(),1,1))) >> 5)=2 |: i$ h1 `7 ?" [8 B

: @! y6 Y2 z( t. Z. L# t$ B' Q+————————————–+1 ^9 e6 }# f; e# s" G& W% t

  Q6 h& K6 b$ t, J( V| 0 |
- ^! o$ E& s; O" k/ o& Z% Q& W. @- Q: T5 D% S: c, ]- g7 `
+————————————–+
4 N+ D5 r4 H4 c" O1 O' }& X: _9 X1 V5 p/ o
即前三位不为010,而是011
- E# P$ J, @9 T* R4 [8 n
% |' L+ m4 t4 u  n
) P$ z+ _5 g$ q  s1 i
4 m! g2 o: t: [) e' ]& v; G7 s直到获得最后一位! Q# Z( h! v# z1 O  y; \
& f6 l# _, ?4 K9 j* t, B; }

% L( x3 D# Q6 b. ~
6 d2 u# n0 u) A$ R3 D0 U5 Z% E最终结果为:01110010
# N+ h/ J2 v4 g" j
8 F6 K1 n4 g* [
* [% N. n7 e2 l0 b3 Y% @% x! m: o0 g
转换一下:7 P, V9 F2 @$ B8 z0 B, m
" {3 X! A" o& v" X8 T$ A
2 E5 a: j6 \8 f4 [6 X

; O/ v) n  M  L" [9 {select b’01110010′' B& A/ N# q3 w7 X
. G  ~$ q% e& e
) n$ I* x# X6 b& ~. h- J
4 i  H! ?3 I% K1 M/ s7 I: [( S
查询结果) c: l) B0 n3 k
' c6 S' {( N" s5 R

$ n% g5 h7 r. L! r, R
; v' R1 D7 }" j+————-+
; K- z& c2 N4 }$ T: m4 o/ [& d) U* ]+ b7 l
| b’01110010′ |' Z+ T) Q" `) ]

4 P2 |, y- m9 m3 P1 ]! p) j" F+————-+6 _6 Z# i2 _9 R2 i8 {2 Z3 k5 q8 B/ {: T. n

' _* N" G/ j, K- {; r| r |' t3 S3 z- g3 n# X7 s/ c: V
( C4 k$ m  [" q
+————-+7 K* X* m/ V1 T

! @3 j$ T$ J% N6 w1 row in set (0.00 sec)
0 G( G. U6 U/ y1 ?
3 t; G+ D3 F) m1 I" T9 L
1 u4 }  |) V; I/ Y, U
# {1 Q5 f: ]5 r5 s8 P8 S$ u这样我们就获得了user()的第一位.其它位依此类推
8 f* [+ u/ N) T" f
7 u& O& O" y0 n4 R4 m1 B1 q
回复

使用道具 举报

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

本版积分规则

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