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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
5 u4 D6 c: c3 x* r6 @$ P
  ~" Z3 s' m% ~9 B  o5 D$ N * O& y; p" J. t, z0 x

7 A" a6 }: B4 w# F, `+ ]! q下面将以查询mysql数据库当中user()的第一位为例:7 T% X2 @7 [: f7 A# p! |3 U
6 [& _! S$ {/ J  u1 s

8 G$ `8 n8 T. @& `8 t: i. j3 N2 N( N
. x- m2 \2 u3 t4 W) Ops:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)% p# `7 V+ u/ k% b

3 A, E- J# {/ X8 T 6 C9 y' s9 Q$ p( j$ v
( S9 c5 J0 S; m' i  E, \& R2 L
首先执行如下sql语句:) R$ v; N0 A; b9 ~8 F* b  Q- ^5 _
2 h' v- x& ], I! E+ u: L# B
$ w0 G2 c9 r$ f# |  m
5 ]% P5 F1 w/ d5 v
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;* @0 _/ _9 o; g

- e' v: Y  D  d0 e1 U, ~8 V
, t' ]% ~" |6 y) b) _% W& c" t- p4 r5 u* a9 S! `
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
) G! |' H% m% y1 e( m4 ^. D/ A6 B; O

' _0 y: j& l0 i! e5 _( i2 H1 n
( }# m' y0 \1 [, W第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
0 z0 q/ S) G# }) `7 y4 q6 a0 d% k! m7 E

7 K) V+ o: I# M5 B% ]! c/ P9 S% g
如果运算结果为1,说明第一位为0,不为1
$ a* U' T  f; Z3 N: c7 E1 U
, `0 P# N& i; ]( P
6 v" Q  p% y( J4 H; ?; f- R3 H) [6 n/ N6 ]6 c
+————————————–+9 L& N4 T7 }' Z9 i+ `# b2 r0 o

) u' B, n+ R& N1 V2 _0 p9 a| (ascii((substr(user(),1,1))) >> 7)=0 |7 ]. t0 r5 C7 D$ |$ \2 a# T

' e) q, A+ D- P3 o- n+————————————–+& M3 `3 {4 y! }* D* v

4 R6 p5 E; X; D6 ], T- ^0 Z* I| 1 |$ p0 `! c6 T2 \, A' D6 A9 d5 d; B
0 w- ^1 a; D8 L6 N: \6 k
+————————————–+
! |. z8 N* ]8 J
7 u% h; T* s" e3 ]0 t. v1 row in set (0.00 sec)" c7 N( A3 u/ @! t+ w+ w* p& @, ~2 q' K
( G" o9 Z/ o4 |% {6 Z4 [4 x
这样我们就确定这个8bit的ascii的第一位为0* l8 ^# y# F0 O) x2 H- O" M
6 t* ]3 O+ M4 E" {! d: ^( h
8 m& T# N  o8 f9 p

+ x$ S2 S& c4 O3 @- o( F第二次我们来做6次右偏移来确定前两位6 T8 B- e( B; S; B  F- D! I/ A
) R/ d, t; j/ s# D$ J  X

, n7 U5 D0 n! I" k# T, n) C# i- d* u( s
前两位可能是01或00,即依然可以与0做比较,6 j' @& g+ }/ _3 N/ T- f' X

* a7 I5 W! d2 d, Emysql> select (ascii((substr(user(),1,1))) >> 6)=0;1 N$ h" ~' M  P& I# |

' `7 U: d& t$ h9 W! a+————————————–+& Y8 E( ~5 o5 I9 x' J, c+ t/ i

, H5 z8 K% Z4 q: a) N| (ascii((substr(user(),1,1))) >> 6)=0 |
, F! o* _) F# T
! M: m4 Y8 K4 l$ `  V+————————————–+
# p& X6 A$ f" c, h- [/ |5 b0 h, S2 Z/ J) @
| 0 |6 b# Z9 F. C% `6 p, f8 c
- D1 Y2 m% U8 c5 v
+————————————–+
9 z. V4 Y) R8 U5 {3 @; ~6 c5 ~6 M0 ?7 d- p6 x
1 row in set (0.00 sec)7 k: G" p9 `* ?$ i" N
: A+ A4 B8 f' |: ^$ r# e3 k/ l" s

4 h$ I1 }+ F$ q# b6 W
( g% T: k. A3 z, x- C结果为0,即第二位为1
6 v; @' u5 B8 l: \. `4 p9 i$ T% K1 I+ A! E3 r& n, D2 M
; M) ^# f" N1 v0 z4 w
! I7 s+ Q8 P* Q/ T$ N
开始猜测前三位为010或011+ J/ y- R: h8 `  J. j5 q
: Y" U: ~7 w5 w; o  k& c8 J
3 M. O8 S2 E: L" U4 |4 E) ~

3 Y! k) M+ E" @9 ^- Z9 k& J让我们看看010和011的ascii码是多少
/ V3 T2 \& ~1 Z
: B, L: Z- i- x' }+ l4 P: A
' Z! S% w2 r7 N  L& c- S/ z4 ?8 T# d+ J4 U! m; g0 k9 H
分别查询select b’011′ select b’010′: V2 \4 v2 N9 k9 f) [! i9 S$ c

% z1 F9 E: E, i  r ! O: l  {% c" v9 D( o( d
" A, Y( p& G% r2 c1 K8 Y% E
获得结果 010 = 2 011 = 3
0 I# X' a" s- T1 E
+ i, K6 o9 j4 m) l1 M7 L/ E$ p1 a
  R1 D, C6 |1 {9 E$ W, i7 ?. i6 b
执行如下sql:
& \$ l3 f' s$ x% Z# _
" k, ^+ k$ x$ S2 T
$ w7 G5 H: h- \$ ^
) N/ @7 U8 R, B4 _2 r/ t+ `; A/ Dmysql> select (ascii((substr(user(),1,1))) >> 5)=2;
# Q- J) }! b- T) O% s1 F( X" \
. L$ a6 ]) D# u2 X% P; e7 l+————————————–+- e- q, K; H0 F5 Q+ \

! o# G( b" p+ d| (ascii((substr(user(),1,1))) >> 5)=2 |4 S+ m4 y+ P4 O, A& o$ L

& Z/ o9 ]' @" q+————————————–+# {6 d& ]* c3 D) G2 W4 }
5 i; D. H# q$ u# o/ a  ^$ E
| 0 |
3 h# k$ s9 S( h6 C- g0 s( f! w9 _+ p  a) g, J
+————————————–+* h* b% G- M5 b6 Q6 L
4 p0 u! ^0 E( a: u2 o% p2 e- j
即前三位不为010,而是011
* }8 K# s& O  s$ H. I
, r  u1 K3 `0 f' L$ G   M  j' T6 r; S$ l" x

7 T6 b% K' o% y. O, J$ E7 j: Q! L直到获得最后一位
( q6 M( B9 b' k! Y$ T1 H  R. k" V6 |6 v! i
! C( h' f( ~' R5 J$ m: q2 j
6 C. l: k% v& k3 f1 g/ g2 ^
最终结果为:01110010% [. G. y$ `, s+ h' h/ o
4 \& K! a4 H" I' b
. [1 f  l* G/ O
2 {& O0 X4 a7 Q4 R. x
转换一下:
- ~" w; @  `9 `1 A, ^/ H+ S" F- f; J+ l2 [% b- p  b# ]- Q
$ D. H0 g  S" A* r: g3 q

" E- k: M) f$ W; M) Gselect b’01110010′# Y, i$ J; l8 B# J) R+ v

$ c5 f& ]% [. N& o$ n
) K6 u. s4 H) u0 R8 R& |& l( t, v6 P7 g4 |  l/ i( {
查询结果
$ y. W- L5 Q! D" y( C
# p' R; R  e. d! A 2 X8 Y6 r. M0 K7 v. r) W3 c
& y+ N4 X: ]) {3 o7 L
+————-+# u* e/ v1 Z- t
. y" l; O- j; k" P( |. Y% W
| b’01110010′ |: Q) ]. {0 J7 X& C3 o6 q
  i5 C! o( G0 x7 d) ~# s& p( r, O
+————-+# g" f$ z: v$ Z6 W  k$ D% p! A2 N4 V8 Q

' w. l  j( S; W% @. D$ l| r |3 Q9 r5 I/ b  R) y. @4 k
% c" A  q1 H1 {
+————-+
, f6 K2 b/ Z3 {/ }1 u  M# e2 j* e
" C: ^# u8 o! k! A1 row in set (0.00 sec)
: Q3 g2 L8 y' J  M) g7 f
- ^; D" s/ L3 f: p" D# u% }; K5 r3 Y: K
. Y1 l+ N# d- J+ h6 d+ a8 U
8 r: ?6 G( \4 p, F! R这样我们就获得了user()的第一位.其它位依此类推5 A# N  p9 v- E& ]
" e; K* _# j& N. Q& \) K
回复

使用道具 举报

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

本版积分规则

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