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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
1 f7 v( m0 p7 M# R1 @
4 g% ^! r. q6 Q, X0 T
- N2 ^) s# M1 ~2 @& H
% ^/ \) |* o; X- M( {& N下面将以查询mysql数据库当中user()的第一位为例:
/ u$ p3 B. y: u+ p% J  Z9 I
" Y2 X. T; h; F  W) \5 z
) `* @+ p& Q. s4 u& t2 S8 f4 P! u2 u# r3 Q; Q7 C) ~* ]
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
$ S, x# J5 h4 |6 S+ |7 a
' ?- Y. R2 a7 Z
. e9 l0 ^* _+ t1 F8 |2 D. N* x, P! s4 d# e5 i
首先执行如下sql语句:
& J0 g/ r5 O! Z' A$ V8 K; P; Y8 b% q& G2 O) p
: c, C- M) \4 M) g3 e

0 i! Z! V  {; j1 u4 cmysql> select (ascii((substr(user(),1,1))) >> 7)=0;
3 s' e/ ?) o8 A+ b
3 t, z0 _% R- i 4 L, T1 y( Z! y9 w* N/ S
$ y: F8 D3 h5 A. F& p8 m) U- {
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
/ Z' s( a5 k: @
$ D9 u. R$ m1 {! v( o( N 0 R/ }. O) }1 D3 B* z

% B* Q: i1 d2 _- w8 p第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
/ q' ]" ]* \% I1 Z# W: L4 U! q- r! X. k( ~! B

) L' e& P5 r* N' ^& J6 ?
2 j7 W& w' m# ]. `+ t3 Q4 j* @9 `, Z1 P如果运算结果为1,说明第一位为0,不为1
" }5 Q: h4 K& a% v, k  }6 Q6 E6 V9 z8 O$ ^% E2 S  q6 \

7 A0 ]9 U/ r3 U* J* |( D" X4 ^- t9 _
+————————————–+3 X# X$ p  M% y- u; J7 _# B6 E

: Z. l. Z4 r2 }4 a$ Z2 B| (ascii((substr(user(),1,1))) >> 7)=0 |
8 Q) Q* n: a& Q! K$ y2 \2 N6 k! f9 [
+————————————–+4 z0 q  C& ~9 d' S  s/ N7 g
7 t1 k) |" e; \6 Y/ {2 i7 u* n
| 1 |# c# A' j0 L+ I9 X

& y% d% i9 z! h$ e) F0 C3 C" E+————————————–+
$ F& [$ V( V! o% c
7 P1 r4 e0 K  `1 row in set (0.00 sec)
, {5 f% T7 B& @8 m* ^7 {! p+ ]0 L
: z  L7 C& B  m! ~# D0 I这样我们就确定这个8bit的ascii的第一位为0. u) I4 w- c  i' E* j% p+ X

  O  l& A: d& _; t$ n& K
' Z# v( E4 I9 X
9 J  K  N: e+ ]" d' ~+ H3 b3 F# }( G第二次我们来做6次右偏移来确定前两位9 P: p: l6 k0 R/ r3 {! e  l8 R
- T- s5 s( \% H2 h1 [( @& E3 X5 ?
& k2 x, |% }" X0 o# _

8 p' o' b$ f( f; X% H; x& Y前两位可能是01或00,即依然可以与0做比较,$ x, h4 Q4 l* a0 Y% \) S+ g

+ _9 j2 y# _8 X5 ~2 d/ B+ X2 Ymysql> select (ascii((substr(user(),1,1))) >> 6)=0;. r) ?$ ?& i" y7 C& s0 B/ R' t! `

' {) @0 s6 K! |6 h7 F" c+————————————–+2 V8 N5 n% o5 _. ~1 J: |2 ~

- z7 Q' u( z' L9 v2 |& l9 x| (ascii((substr(user(),1,1))) >> 6)=0 |" m- c' Q  D. L

) ]3 Q; f, O/ ~8 z+————————————–+
! l8 \' v: k' g/ J# a% m% f4 F
# \( ?$ P0 B' S$ r3 W| 0 |
; V3 b" A1 L5 Y5 P7 w1 I) c3 B- V( L
+————————————–+% H7 b4 Y1 M, \; R. D" f( O+ P
& K8 k; J- l: d; s- }& `
1 row in set (0.00 sec)
, j/ k) F# l$ I2 m* q. D. Y5 a) A. E" {+ J& G
1 p7 s4 l$ M- L& q% V

4 W. V1 o' y6 s0 p2 b$ l/ R4 t结果为0,即第二位为1
1 X6 S# F0 w+ i. p; [- q, `! }# Z% O
8 U7 d- [* I8 r7 O( O * l1 w) U5 }  X( B1 j! h/ B. ]
6 |6 Y: b8 V" S- H+ N6 A9 A1 p
开始猜测前三位为010或011
; J4 ^& }, v+ d- P& ^% v7 U3 z
! N3 j! `1 N% b  }' A
6 ?" w. U4 s3 ~; P
  p* D7 J0 m% a# D# {& J# W$ y6 i让我们看看010和011的ascii码是多少- Z, O8 @0 x5 e
, b3 R5 x2 y8 L) c1 e
" s' ~7 \/ C  X
5 J6 t4 R# x0 U+ F, M7 m
分别查询select b’011′ select b’010′
$ w( d- x6 w, d) B! a  H) ~4 T! }/ [
' e# r7 U9 E/ M, [7 C7 X
3 l+ f4 Z7 S' l/ x
3 j* _5 {( d- G4 l. m3 o# g3 v3 ^获得结果 010 = 2 011 = 3
2 B, E2 J4 G8 G2 u) F; F9 a# o9 h6 F* C: F; i" u3 R

8 \( J6 }( t* m% n1 ?
/ P' q  `7 K5 J+ S4 j, D执行如下sql:0 `+ q# L& z$ ^% R) b+ }
0 R1 J) f% |; q0 ]5 v% |& {

/ ~4 \; w) |- W2 d/ n
* v4 ?. e  x6 p9 Nmysql> select (ascii((substr(user(),1,1))) >> 5)=2;
/ J) V# ]+ p% k2 d- _3 G( C0 d9 Z$ i5 c* s7 i! T
+————————————–+  X8 Y; ?5 ~$ b3 p- H- L
" q1 \4 l; A2 N$ Z7 `
| (ascii((substr(user(),1,1))) >> 5)=2 |& b: Y, t9 M" J9 y' h/ J

; p: T6 i$ S& d; t" D2 A+————————————–+# u3 U  s+ }: @" J9 Z' Q  y

7 x5 U# O! M% o+ `/ F* }' d& k| 0 |4 E/ y- W% `5 b7 A( G' F! J4 ]" i

% f, w, K5 B0 Z! R+————————————–+
6 ]% i! _! o1 {/ \7 Q8 E7 d/ [, C7 ]( A$ e; w' w1 ~. s
即前三位不为010,而是011
3 C2 q% G: F$ F2 G  b7 q2 P
4 X5 y) h9 ?" l2 h8 s6 { ( p; ~# G2 ?$ y; J7 |! y& Z
+ S8 e& k6 M3 r
直到获得最后一位
; v3 d4 f0 g7 j( O- T7 l" e+ [
1 f! Z$ D8 Q; Q. S" O
2 t, J" ]% ~1 t" _1 r7 f
( L* P, D! \( Y! Q( L& ]最终结果为:01110010
  o0 [% p: L2 R4 B( m3 M2 P: W- K% t+ {3 Z, W3 m# y

' l! A) ?6 T5 d' I. ?
. J) T) H2 ?2 X; Q2 S5 p* S转换一下:
! W% `; T! C7 h2 S7 v/ [# A
; X' |8 o( p3 N" S: `
  T. X- |' K9 `3 D4 c. {5 W7 w1 D# x1 T
select b’01110010′* v, A6 n9 k# v/ y5 h! r. ~
! ]3 ]% q& D2 G: ^, N, \+ U  T
* g/ j4 n3 U+ S& p9 {* K, C$ L6 t

# E5 z- z4 r6 R+ x6 g4 c$ ]; N查询结果0 ~: U" q2 H9 f

/ {5 K6 [# e5 R2 ?" n2 i, j
' ?: c$ f0 a, @" n& u2 C' E2 ]' |& M* F2 r3 `' i5 u
+————-+  y' l0 j8 @+ P2 ?
0 t- g2 S/ a/ p
| b’01110010′ |7 g; ~& g) S& w* ?, H8 E& J
  C* ?! \' t) r: N2 ~9 V
+————-+5 l' B6 g; p) E' }' s
+ H. `: [# [0 A! Z2 F
| r |# n. e* H5 Q7 W+ V! D

1 D5 I( h+ p9 l+ r: w+————-+
% a" j6 I5 Y9 R2 J. \$ R( v" H7 B4 e2 J
1 row in set (0.00 sec)
6 L  g- k, e. ~1 B9 c6 p3 o! V: Z  c" j  b* F; F7 m$ ~6 U

* M! W' b9 ~& T2 `7 k+ N) J# J9 V4 l. ?9 j+ z# e
这样我们就获得了user()的第一位.其它位依此类推. X* G2 M- H2 T4 E6 H" T2 @7 G
+ X5 ^5 d4 ^8 n! @; |2 }4 Y
回复

使用道具 举报

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

本版积分规则

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