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

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

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

# a9 C; r! U% Q
5 j8 B2 |: M& @9 P
$ J& y  m, ~3 X( g! N% }下面将以查询mysql数据库当中user()的第一位为例:
: l6 Q. q( x. e6 ?+ K- y/ y' Q
1 I& U! i2 k+ R; ?9 Z 7 ?! `& b! {4 w3 g& {' C
; [' B- |8 k' {  K
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
$ d" c! y5 \4 Q5 }" ^" e+ j" Y
0 l. {8 Y4 M/ g% b3 U . m3 f; ?, f# L9 g; X$ f
4 U) y4 p( a( w  x2 [
首先执行如下sql语句:8 Y1 P! H2 H) T8 E& k7 H/ m  h& i
) e! E3 X8 K) X3 P5 ^/ ~5 P

7 q2 K; I, f3 {2 \- \- M
+ O: J+ j( C' l8 x! j+ |* fmysql> select (ascii((substr(user(),1,1))) >> 7)=0;
! A  @6 O+ t$ U$ Z( ^
2 C2 X* p$ N% C  Q( k; ?7 x7 _ 7 {) u, V# _. U6 ?7 i$ |3 k
  K  {  C4 ?& L9 [
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的6 q3 |; q. ~- z$ s$ y6 m, w
+ U) ]# S/ ]' ~) N/ ^* m1 n

. T9 J, h' w# ^4 x' \  t. w2 j
4 a* E! b; u% k3 {  `  v第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
8 v, m" V' Y1 o3 ^
- {( V, H# s' i* w+ \ 1 T' b  n. S! u0 t# B

  ~8 N2 F3 e: y. B如果运算结果为1,说明第一位为0,不为1
3 h) t4 j; H0 r- w8 A; x2 i1 u
9 ^1 Y, [" u' s& C* r3 \+ } 9 B+ h" P6 H+ c* k4 N- W/ j: }& U
, m1 M: m# o9 E2 D7 }3 G  o0 g
+————————————–+6 ]' X) o  {# r

- n& }( V9 D, x& p4 u) T2 j| (ascii((substr(user(),1,1))) >> 7)=0 |
& j' r% S+ q9 O! V" S0 P$ ^6 C- J/ A0 ?2 _3 E2 r& D5 x
+————————————–+, Y+ R  j' X) z3 t" J

" v3 _  c$ g6 i0 Z| 1 |
! ^" {: A! g% D2 u! z8 |% J  p
4 l" h. w1 x4 t& z3 b" v+————————————–+) U, z. Z7 |" s6 H( \* x6 ~$ u3 U

* H4 S6 d& ?7 s6 [+ O" W1 row in set (0.00 sec)4 o5 d6 ?. r# B7 c; P( |
% {$ G% G1 V, C, A
这样我们就确定这个8bit的ascii的第一位为09 V9 ]3 R/ R0 q+ I
% b, v7 V# c7 r, j

- t+ q" T. J& m& h7 c, j3 [1 g
; Y1 f; z9 b7 ]$ `# q" A: C第二次我们来做6次右偏移来确定前两位& ^! L% U7 e+ ]
$ z0 v/ Y! a) a, h7 }0 C$ s

) u, E+ X& ?, i: h; E/ b# f
2 x# C! J( q. A0 t# k: s前两位可能是01或00,即依然可以与0做比较,
* I7 U' c. b6 ]1 D: O/ E0 S8 _. L; u0 s4 x" r' @8 O4 V/ m
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;8 L8 Z8 I! H* `% R3 l# D: s
9 A6 b* p* e3 f: k  ]* \3 F0 m/ w
+————————————–+
, x3 {4 a& v" V7 @) b3 c" U9 X, O0 e9 w  F
| (ascii((substr(user(),1,1))) >> 6)=0 |2 c8 u  E& Q+ A( ~* e1 f8 w
( O* ?" |1 G& Z; I( K( |( G$ a
+————————————–+
: ~% r$ e/ Y0 `; Z( p
5 [6 A3 a7 m6 @| 0 |+ U& y' m. j. N/ Z4 S, U
$ G( P, _% ?9 q, [2 P  t) y( L
+————————————–+
: b# l7 ~/ m1 V( F2 W/ r; D5 Q  {: z! b( Y
1 row in set (0.00 sec)$ V; ~" H; m9 o6 e. o, @
; Z% V1 q# V2 s

4 ]3 N* z# \: h- x# l) N! @
4 Z; G; i- m- v6 `5 q! [9 [结果为0,即第二位为1
  u% y" w# R9 M* F2 \# r3 |6 ?) A% o- l/ U  E) H
( z5 @. H- s9 W- \, C! P. T1 x
( }( T& W# o  O. [/ @' q
开始猜测前三位为010或011  r8 ~9 @- u3 J2 b# t, Y$ M

2 E2 c2 o) r+ \, O
& V& C1 h  P& F4 b& L
! |  k( g! p- Y2 _( U让我们看看010和011的ascii码是多少; l! E5 F( a& |$ j3 G  Z7 V* e

7 D! z0 ^2 B8 V, p/ N0 F0 C
. _5 F  y) ]& i4 ~4 Z' m& @  Q! K" W. s. W( R. j+ u4 U: h
分别查询select b’011′ select b’010′' Z# l, W0 b! V1 j) Z5 v
$ d  W2 E! B! ?9 `) J0 G. x

% s: K" C0 R# T8 T; m6 }' Q) b5 P  y: Q; i6 ?% y
获得结果 010 = 2 011 = 35 e" k$ ~+ z! i9 _6 |$ V. b
* {$ S" t1 u8 h) V/ `1 ^

6 Q: G4 y7 k1 t# `2 Y( k+ d# \2 m& f7 R" d" u% V
执行如下sql:
: O( F* y& y" W* u: O
0 u/ y" A5 N' Z 4 c; I& Q) G8 ]0 t- h
% u/ `) p7 _* ^  J" w& |. [
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
/ h9 K8 j. a( Z6 n0 W' [
$ K  z3 ?) M: C, h+————————————–++ J, d( e: B8 L# O  d
$ E  l% P1 u" |& _. H6 N
| (ascii((substr(user(),1,1))) >> 5)=2 |
3 N1 K0 V" g* {6 i+ L; F- v% b  F! [; H* y: @
+————————————–+
1 {5 q8 g; @4 M& @
# w4 l3 `/ A  L. V  S| 0 |
& E2 H) l# S! f9 |7 S* g( \
4 L% f5 o. ^, f( Q) k/ V+————————————–+
' s8 n+ S- o" P  d6 r6 x) M/ \5 Y$ T
即前三位不为010,而是011
- C2 l% }% m) O0 S' q' }& f) g, l5 w: z/ V

7 g6 {8 O8 u% |
: y+ `# c3 d& J- _直到获得最后一位$ s- Q- o) R9 o& i* z1 {, ]
+ Y# V9 h, x: A' {/ v! \

& a. {1 e+ V& S
( x9 m! v3 t. |0 v8 t6 U2 {4 x, b最终结果为:01110010' k) ^( g5 H) H5 n& P

6 F* S1 g) o& Q, w6 N" P, H 6 j; d6 X- s- M. ]' k$ u% s, l
) P3 z; [+ O" L2 k  T; L' h" r
转换一下:9 T( f8 C8 V$ O7 f! C" h

8 Q5 I2 h1 A5 J! ]
. a5 `+ Y. m& d) b3 I
. C  l) w' L8 n+ h9 z5 L0 J6 Qselect b’01110010′
( J+ _" c" ^$ L, ^+ u$ R) b2 _: r
0 [' S% b. l& a# E & j; g% ?  h6 Q6 O( M- R5 I/ h
( |' f7 B& W$ O
查询结果
+ n1 j, U' H9 w' P4 g1 O# R- T0 \+ w. ~+ o& k, ?( L
5 s9 I) X% C" J7 v( ^

6 {- b: b+ G4 m) W& L8 u5 O0 a; C+————-+
/ |3 ?1 {, T# y& d) ?7 B% j8 t
3 Z' y# ^! b3 ^$ E3 Q+ T7 q| b’01110010′ |
2 A. T, V( k" _( C, }7 I; j4 m' o+ e0 i; S  ^& {/ S
+————-+
& y' n& c9 x- d. h+ C  L. D
) i: w$ i5 A3 N# |4 Z| r |5 |) ^" p( \2 b3 O- M7 w$ M& A& b
* M$ e# h6 p1 l8 P
+————-+
8 R0 y6 `* F- J8 I5 [& C7 M$ n8 K/ I0 x0 A$ e
1 row in set (0.00 sec)9 [7 F2 i  H( W. \

- [7 V# h$ R/ H* {+ A5 p% ~) _ 3 N# I8 l2 i% W/ Z9 Q& @2 ~

1 O- U2 a+ i% C# x这样我们就获得了user()的第一位.其它位依此类推1 E6 T+ H. m5 c5 s; |) f
$ ^2 G, J& K; n$ T
回复

使用道具 举报

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

本版积分规则

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