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

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

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

7 p" \1 k5 I2 }  _7 I
0 m3 k  N* D8 B# ~  t5 L
5 M, D6 l+ k2 b: O6 j- I下面将以查询mysql数据库当中user()的第一位为例:
* C/ H, d1 Z1 A1 N! u3 P+ w8 W3 y: d  c, y6 i" G# f
' Y5 M# Q& \! G1 _% S/ b
, x: K4 T: ]+ \( v
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
- I; }7 w* R# J8 e' q
2 p7 O' X9 w9 E5 J8 d" w) v3 Z. l
( s. R9 A- E) N( C$ f3 F; x. K: w7 |
4 e! `& P3 V: c1 F首先执行如下sql语句:/ }8 E0 r* g5 i

+ b) ]2 Q+ i9 \2 f, ?4 R1 R 2 _9 C  b$ x5 I7 g6 k

+ i3 S- d% I  Z9 ]$ Emysql> select (ascii((substr(user(),1,1))) >> 7)=0;
* \; ?1 a: _/ E1 D5 \; h! A# i( y9 I& N8 I
7 `: r( f( J* n6 ~

5 O- r: k, K5 V# Y8 d& D我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的7 d* Q* a6 h% g" v

# j- Q1 l- Q6 ^. S: ~
) W/ f1 n7 E! q" x5 u' V
# w  c8 a) d1 ^' [1 S: R8 J4 h第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1& j: p' `4 }1 M6 n
9 U" w8 a- c" z+ H4 G  p2 I; V% c
$ d9 A# A' l' O; T

# @, K" d7 u; L! n如果运算结果为1,说明第一位为0,不为1
6 X" S; L0 w, R0 S/ o% q9 }( E4 M7 S* }

- b+ C9 k( B% p* j4 a) L' D7 Z5 b8 k9 T2 Q8 c3 X/ b: V' J( B+ _. E( Z
+————————————–+5 D2 f9 u% |# Y+ O

* l2 Y9 e/ a4 N% \+ q+ r4 @| (ascii((substr(user(),1,1))) >> 7)=0 |- k0 b* d. H, @" @0 n

0 S/ x  y6 x8 w( G+————————————–+! q" Q9 S1 j1 Q4 O
( ^. i6 A8 G7 ]/ m# E( h
| 1 |
. o! w4 @4 O7 y9 S) e9 \5 j
, \2 r  [1 t$ _! ?7 J9 |+————————————–+4 a) L- Z* S* O. a/ @  L7 s
; s, x& i9 ^( g9 w7 t( m" L5 X
1 row in set (0.00 sec)
; w, G0 c0 |4 R
, ?, L6 c9 M7 {+ f9 a这样我们就确定这个8bit的ascii的第一位为0
0 y9 j1 D8 F5 C( J! m% ~* l. c' {+ @) ^
, ]1 z, f! m, I
, k! H: g6 C" r: }: g0 }, T
第二次我们来做6次右偏移来确定前两位
7 d! y7 B' @  v/ Q( M. D3 y# Z' x" k) Q

9 q$ u1 l) d* [& s: W3 `& h* v0 D& V5 X8 W5 C- M. z% A
前两位可能是01或00,即依然可以与0做比较,
" `% h* Z( x& v9 D$ m$ s- J7 v& n7 J/ S6 @
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;3 W  t  K% F, E( n+ ^, c( i: l' N) G

3 z: j0 O+ H) x+————————————–+
; Y( }, O. R- x! Z9 k4 D4 i" ~1 G) O- H1 D9 o. [1 M
| (ascii((substr(user(),1,1))) >> 6)=0 |
5 H" t7 c  m3 B* |% k7 j9 _
5 W7 _) Q3 o3 X+ A+————————————–++ c8 x, J1 c: H. l
7 m. Q* R, L4 ^8 y0 J; O
| 0 |4 s; J( w7 e+ |# U+ u5 d" Y
# t" ]( X8 d0 V# e) o3 u5 }2 j
+————————————–+
' |, ?+ j) W. J: Y7 }
+ _# T% H$ j  @! u. e7 N1 row in set (0.00 sec)
3 `+ d1 i; W* R1 y) X9 j; {% z+ l7 w" V4 t# V# w1 H: Y/ t, I

( K3 S# \+ M3 r
+ G( G: f. h$ F2 Z" F结果为0,即第二位为1! e+ d6 c) ]% H" @, X4 |

. B8 n& U" A9 C+ J4 h" `
/ w6 u6 L9 N8 a# U, {5 i7 \+ l, \/ o  R0 ^# r8 }: B
开始猜测前三位为010或011
% o- F; B# B: B8 d/ E+ H- N7 z8 }# L& N: |1 p

/ X, R  y0 \6 G7 D
7 E1 A9 P4 T/ m$ D! C! @让我们看看010和011的ascii码是多少. x; ^" L! z! f0 p# k
! b1 \1 v6 ?- p# y2 c4 b6 [

3 ~$ {% k4 e% ?# P
8 {& b# S3 e2 i9 p分别查询select b’011′ select b’010′
, p& c3 W! S8 U8 Y! O6 E, `7 V: `5 w: B8 W; B: X
0 e' H0 k. ?8 c
4 C+ J. E, _' I, e
获得结果 010 = 2 011 = 33 r% F- E4 R6 y* b
8 B$ |) ]9 }8 K  X6 a5 E

# g8 U$ D1 J, p7 o; |( p
- l' j/ G; U; ]2 b3 s3 {执行如下sql:- }# r7 j' I7 V9 H

5 {; u7 ^& U! ]$ o ) e2 V- i/ L) K! B! I6 K6 Z

# A  h* M" h. v1 k4 n/ m2 ^6 emysql> select (ascii((substr(user(),1,1))) >> 5)=2;
3 \4 ?# P" l) @9 Y3 Q2 \) Y& h
5 _3 D5 z. s2 v3 j& G$ U+————————————–+
* B0 ]3 T9 F- F& i; h1 _" H# B7 B; ?7 |  p* d
| (ascii((substr(user(),1,1))) >> 5)=2 |
' L8 H# n. H% }2 L! o, S' A/ C- c9 Z! K5 c4 B# V- _
+————————————–+9 [9 u! Z, }! `' a$ H' U- _

7 h+ o- m* [- [+ A| 0 |$ D. D5 a7 w% X. ?

) f  R# @- h  U+————————————–+
$ g1 T/ \/ ^+ B- O, {5 m: J( G7 j% h8 }0 k- H% S2 V6 S7 _
即前三位不为010,而是011" O$ V) A) F3 W; @
9 J# T% I( d- |! [/ ]3 D7 |4 G
7 a. x- |- J( x' V
4 W" e# \( S4 F, f2 k8 q
直到获得最后一位
/ `; U* L/ I3 @
! g( d8 _2 r4 X: Z: v! M1 }
8 u5 \: n8 ~; L- i) Q
! W6 h: ]# m; N& {; `# w0 p# G3 h! x最终结果为:01110010
2 i- w1 w1 V# B9 i
! `) P( u8 z% q$ D 8 F1 Z. Z' u( }8 N& }

) f8 ~+ d3 g1 Y" Q/ s3 @. t转换一下:
( ^, X2 W5 J7 z0 d# X+ [" j/ J9 ~$ A0 M0 ]0 ]

' ]" ]1 x( \3 }* g( {0 m% N, i
+ D# n6 f) r6 _' k- Qselect b’01110010′
( Z# h* x" a/ N# H/ [- v$ u- _* v5 |: N

$ m' a# A4 b% P1 `( D4 m: f; F
查询结果6 K- d# k9 e7 g8 S0 b; s
. E( I. n; L! F8 g

0 W2 ~: x  j% o1 P& e
# ]5 f$ R  M4 Q& a0 o) G+ r* o+————-+) P/ M8 p' R  ], j3 R* J

# r3 F2 `' r0 S2 s* A; a" G| b’01110010′ |
( q; N; S% C, T4 Z' _' s
% h9 V9 |2 j) r1 ^3 b: E& j+————-+
5 e: Z! m! P7 j2 e# z. Y$ Z' `8 s& L) F5 R3 H& D
| r |
* i6 h9 v/ Q4 k- S) q% y6 e. O# r* Z) j
+————-+
3 T2 Q/ z# ~0 t( G. R
; Y5 y: W* R* p: w4 t1 row in set (0.00 sec)
4 e3 N' M" X- P" t( o9 c
( c0 o' k; _6 [+ I 1 y. D' f. [( ?' X$ C' C9 [
' r6 t! {" |2 ~: Z. h
这样我们就获得了user()的第一位.其它位依此类推- C: j4 P( Y2 A7 M1 |1 X
7 I; {% E4 Y9 z: [
回复

使用道具 举报

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

本版积分规则

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