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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
) P9 b  x/ [/ b4 g7 w9 y
- t: |# k* K1 f0 J+ w* Z  O
' f( {8 D+ L" c* @7 d9 k) P" S: X) l/ h$ A5 Q
下面将以查询mysql数据库当中user()的第一位为例:
. |% {" d: F9 t
, j! k# R2 H9 Q' e# f 8 P" U# E5 w4 T( O, y, }
9 @. L; `0 W/ z# J$ Q' F+ `$ d/ H' j" d
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
1 y/ h- Y* F* ]9 x1 I  B' Z% s0 M. q. N, u3 W( I9 I% X

' S& t+ ~; G- G9 ~) b* {& X/ I$ {) D9 y7 L5 K) B; V3 z: j, k4 N/ t
首先执行如下sql语句:
' R/ H% L0 R. P4 W5 [/ e% {" w. B- ?, q& L6 \) d2 X& r
9 E/ {. B5 A9 V2 t$ y$ l
8 C( a: i$ q4 y* {0 b
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
  A* g) j& v, U/ |0 S
. ^2 f' Q4 X9 L7 x0 r
( C0 S' S9 D/ W* b- _" e) d0 f- b: d* l9 N* Q9 [
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
6 U$ d2 I9 S8 u7 ~+ H6 \
3 C6 p$ y+ V" {* j+ a
- t3 F5 ]6 F$ `* b4 t6 I) h0 U3 P! T% J3 W7 I5 a, u
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
) B, _- b4 s5 L% \  y, j! |7 r, _( K
% U" f( ~6 D% g7 ^. f
) h) [: _1 M* k6 |9 A
! j5 p) ^3 u6 p  T7 A如果运算结果为1,说明第一位为0,不为1$ L# i4 V* }* E& d- J5 b$ z

4 @0 C1 m/ U. m5 x) Z+ r
6 b* y) J/ w, N: e
. \5 h6 x9 I# N  T* e# F( M+————————————–+5 R# Z% Q" p' ?
& a$ S) ]' _/ c4 j& T& K
| (ascii((substr(user(),1,1))) >> 7)=0 |5 V5 l# K3 n2 f+ s3 Z/ s
, J! P" D6 W/ A8 S
+————————————–+" y4 f6 B* P" @) U
( G9 K5 X7 G) D( }
| 1 |' h# v' u9 E3 j& ^3 M* G+ H
1 M  ]/ E6 u  i- H, G& c# n* R  y
+————————————–+
! o' Q6 k( B- E
0 T. `. o6 O6 i" |/ y$ e7 v1 row in set (0.00 sec)
) n  ^5 f4 @7 e  f# J
- u( J' `$ Q9 r6 m) S& A8 X这样我们就确定这个8bit的ascii的第一位为0
; G6 f3 y2 j/ R6 Q/ R( y# j2 ?. B8 K" K, ]" I8 Q5 c/ x5 @/ y
* p5 i" r$ S4 }# p& t# y) b9 H! [

- {1 v: d8 s/ W9 d# D! O第二次我们来做6次右偏移来确定前两位
- l, j8 Y3 z" Z/ u" a5 U
, O7 I. I) g, h( z# I( \ % _5 O4 A- t, c7 z# y
& w( v  U+ \0 @' t& x2 X3 u; V
前两位可能是01或00,即依然可以与0做比较,0 `8 g0 }8 O& k

% B9 P6 P  V1 R4 ?, ^/ O9 l* Imysql> select (ascii((substr(user(),1,1))) >> 6)=0;$ N5 V' G# w: T: L6 v
; J0 ^5 }6 Z" X. m
+————————————–+
/ n" t1 _4 W% @/ k9 F. e
. a- I, ~! l  ?1 A3 n- Y$ ^| (ascii((substr(user(),1,1))) >> 6)=0 |6 a/ R. u5 B" L- Z7 }: N( b3 Z

) i9 g% S& }& F+————————————–+
$ c% L5 c" O0 Z$ `
1 ^1 I1 w" D# u! \+ t| 0 |" k: @1 d# \" ~3 A

) i, C3 t6 W1 \+————————————–+
1 j/ x+ J& K  f! z& o/ r" c7 b9 ~) T9 n( k2 R/ Q
1 row in set (0.00 sec)
  J! D, |" l: R. A( H5 G3 a9 g9 p8 a# {/ q" [/ u7 v
& f* h$ \' F+ w+ f+ U- E0 w

$ b$ m( k' C8 O8 r6 m$ T7 r- x9 ]; y6 w结果为0,即第二位为1, g' m: ]. x# Y7 E3 J

2 `1 h  ?* O% s/ ]
0 q1 A" S6 I' ?4 n% k
$ Z% ~5 @% V2 z' F开始猜测前三位为010或011
% Z) }3 W' c* Q# G4 ~
- \1 T1 P/ {+ E+ L1 H
6 E6 u/ @" s% \- a( A; ^) G- O
% ?6 q0 z# g# g& [. `* }& H, p让我们看看010和011的ascii码是多少5 [% z& t* q5 h# w8 ?

$ Y/ B' M1 ?. m) `' s+ R 0 k5 l: q: Q% a8 `$ w& ?4 V+ J
0 d7 i' \% Y; `0 O# e
分别查询select b’011′ select b’010′! W. J& H" O2 S2 `- I* s: D
! ^/ z4 L4 |7 n6 R  {2 y) ~; u

  v- X8 a- o% z$ s4 E
4 e& @' f. t5 N) N获得结果 010 = 2 011 = 3
+ k+ W1 q: q0 B& n' [1 C- g# Q9 d7 a' v4 ^  {, |! Z6 V7 N; q
8 j7 V" j# {& H" a! V& f9 M1 n
/ L: h$ S/ L3 R6 q7 c
执行如下sql:
9 e+ d! I1 T. U  a- h3 M; l* q* V
* v8 l( V/ U8 H/ w* P 8 O3 k5 T4 N: x
5 ]) g* S4 H( F+ R6 ~; x+ P' w$ R: z$ E
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
- x$ e& }/ J: L  ?. |: A4 X8 d+ Q5 E9 H& l; @0 ~* ]
+————————————–+0 e5 l9 F/ g4 W7 ^/ e
2 L; O0 `4 Y0 n
| (ascii((substr(user(),1,1))) >> 5)=2 |
8 u( s6 t6 Q, L# `- l9 e; K; ]5 v3 A% t2 t+ z+ w7 O* O! \* {' ~" _0 e
+————————————–+! C. u: ]% r: |: o( `6 X

8 B2 @8 b% A! c, J$ `| 0 |
; F/ W# m5 r0 }. s
, \" o, x" a3 x* p9 N7 x9 y+————————————–+$ o2 \7 I% u7 [9 k3 }& L
% |0 {$ ]; f6 Q( n8 W0 c9 E
即前三位不为010,而是011+ K0 Z* @0 b+ V) v

& I' a3 N  ?  C/ ^2 d3 x' G1 s
9 `6 ?8 {2 b: X* Y; e; Q  A- r3 |
直到获得最后一位
2 L' D! E8 P3 e( T8 Z' F
1 `- u+ M' H; `- l& a! `2 e) N; [ " @6 C4 Z1 l1 F& [. _7 `9 {

. L* G1 ^8 K' ]" p  S" w最终结果为:01110010
3 A5 T+ P2 l0 i! M; X+ f: ~5 m6 [6 i3 `) g1 G

( Y: a2 G6 f+ ^5 K7 N$ a% J& [; o% n- a
转换一下:
1 H5 X* b, @: g+ [( I6 ?# I7 d. `6 U  U, ], U
) t* N7 Z$ a+ U( x# Q. o# P" O8 T
* p0 i/ Y+ h0 a. }
select b’01110010′; N5 h  D5 P0 E+ @
. t2 X9 J  ~' U2 I* l- Q4 }6 g
( ^) {0 Z- N$ A# O# _' m& Q

7 H7 Y: U. w$ L# n6 U查询结果$ {2 n7 m2 n( O, _, F
$ ~2 `7 H" k0 B/ a3 x/ Z2 Y- L

; l5 `$ z4 U0 T3 K* P, P
: S. v. {! z: T( F+————-+! w- t* ?( y( p% I8 k6 K
+ ~6 y1 ~3 ^% L. g& g8 F7 v: S
| b’01110010′ |, O# H( d; @9 p9 j$ Q8 @# }7 W- y: C
2 X1 B' o+ N# \6 |
+————-+) Y4 i$ \% ?6 `* i% b

5 y- I/ Y) I& {! q% B& O, s2 ]| r |
  G" ?  y$ q4 m# {5 Z$ v9 Q( i( m' z2 @$ @8 p3 D
+————-+
+ w& R- P: f6 ~' U& }' k  O! b% A! i
1 row in set (0.00 sec)
  c2 V+ D9 b# G. r3 `1 m
1 J; m$ ?5 {5 ^6 v; O* Z   x" M5 ~1 p% J9 M! H+ C1 C6 B

) X/ T! g- x; c) h这样我们就获得了user()的第一位.其它位依此类推
( Q/ V. E4 f  F# u) ]7 C$ Z9 b2 Z2 j$ m, I
回复

使用道具 举报

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

本版积分规则

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