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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
* I; o  R4 j! W; t2 `9 Y+ e; }+ z4 F1 U. {$ n, O, A+ ~
8 o- v+ O9 m% |7 p9 h+ X6 l  G
( v; R/ S% i- t% e/ P- P1 L* |" G
下面将以查询mysql数据库当中user()的第一位为例:4 t* i( K8 Q$ ?9 L5 u% S! d. h: G; b

( {! o5 {1 X9 _& B) g' c- I
! |! D6 ], Z8 E) r) i4 T
; {* \" l/ I+ m% Z3 [ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)  P* t1 t* k/ E- f! i! z' o( t1 G  w

2 p3 {- S8 F% m! c
" ]' E) `& N* [" G
$ \2 V" H# }2 ~" K# W4 t4 Q1 r# [首先执行如下sql语句:* L+ B" A2 f4 V' x& b( u0 [0 ^
4 r! i: l) w8 O) l

& ^9 C, V8 x% f* a# x4 E) o6 P+ }' P6 B( @! V
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;( z$ Z2 ~5 V: d0 {7 x' Y" H( Z
& d+ K, z1 W; K+ l' _! m! ^+ f0 q! p

) k* S) S9 H; V3 z4 J+ ~6 B4 x# o6 v* \1 o, L! C
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的. Q7 L3 L) l1 b1 w/ s0 {: f
. M- J2 f, J% W, z, i
$ Y' {) R. S* \9 |

4 u# a" p: f/ [/ B第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
& ?7 l$ j+ K8 L/ ~8 O  N8 f3 X5 |9 S$ A. I& b2 O: H* [' v
7 K- A" R+ k% ?2 e

8 G; i& {4 ?% Z' w7 ^+ k( m& t如果运算结果为1,说明第一位为0,不为1
& V' v. y1 b% e* k, o, b4 d* A! ^7 v: N& k) s$ H

7 D/ A4 c5 {+ R( F6 s
0 @2 h: \, B) u, I# q: y- U1 ~+————————————–+! [5 j, o! Y5 E7 d: V/ g

$ [) R7 z2 c+ F  p| (ascii((substr(user(),1,1))) >> 7)=0 |
# A) t2 Q& e* F/ e: n0 d. u& I+ B  P3 [, {8 s' v. e
+————————————–+% M* }2 ~0 J5 E
( |3 A& F0 b& {$ M8 x7 k+ S0 W+ c: `
| 1 |
( Z. s: q" K: l+ M( H) _
3 G6 t! `5 T7 U- j+————————————–+! K9 @$ ?) x: K' p
+ H  o3 f' ]+ Y  Q' ?6 |/ i8 U+ V
1 row in set (0.00 sec)9 |) z$ T5 l, _( A4 w$ N' y: t

  p! x/ F# _5 Z; e0 c这样我们就确定这个8bit的ascii的第一位为0" b4 n$ Y2 u1 z. c
6 K1 E2 \+ l" }- _( c- [
0 \0 s7 |+ [" \; x8 c
- Y( y' J3 ]4 f7 f* V
第二次我们来做6次右偏移来确定前两位2 Q+ o! |2 m& v3 k
' B+ p' T) X, n$ H4 |0 P
: @. r9 B3 s4 u! T& @* J

9 h$ \* Q! z( [前两位可能是01或00,即依然可以与0做比较,5 I# z8 U- b) i, R* }, T. A" J

$ o6 d4 F& c- e: j" M. kmysql> select (ascii((substr(user(),1,1))) >> 6)=0;; Z& J$ H$ Y5 P) H

2 M. M' e0 Z% Q7 U+————————————–+
9 ]. o5 i) G. x* l3 ~4 O& P; M! S+ a) G( h0 N( Q
| (ascii((substr(user(),1,1))) >> 6)=0 |4 C" ?6 K) e2 a# h& f$ _; s

0 v% a1 W9 R# y! m& z& Y, |. [+————————————–+
+ O' E3 P3 @- p) L6 C- b
, N5 P1 b6 U8 R* t' \) n+ V| 0 |
9 t6 U3 q( u* a, @( X+ y  Y7 z; \2 R  r% p& v  `
+————————————–+
9 V, }& m1 g  j2 I# g  ?$ v" a% o6 o
1 row in set (0.00 sec)
: L5 G. x8 L4 A; i
4 G' t5 a; x7 c8 ]
1 D$ K6 x+ E- C2 I; e% m: V% p; t% V% {% K
结果为0,即第二位为1( r" K  n* n; Q* G: Z
& p4 o4 e. x7 [- m5 h6 _

# f  X5 m& c: ?! {0 h& `+ y* H' o5 x
开始猜测前三位为010或0111 ~  q( M2 Z5 ]7 ^
' G+ F; G9 _3 z3 S6 S" N
) Y6 L* C* {8 D5 }; z
: d) k$ M- i1 \+ E
让我们看看010和011的ascii码是多少
9 a8 a: m8 T4 T( `+ H$ ^5 n0 c+ Y. _0 w# c0 ?% a5 {

9 l& Y0 e9 q6 P9 ~9 P& H
. T( C1 L- C: C; {! I分别查询select b’011′ select b’010′
) t3 k' a7 P( A5 v( L8 a, r/ y3 s  d* L3 E- M6 a

2 R) W6 j5 g5 L+ F# U
6 P2 Z' O- t* r获得结果 010 = 2 011 = 3
0 F& T, ^* q$ O
& c. J6 t" D9 Q1 B" i 7 y( v" }, o% G( c

& ^% w4 t; ^, o4 p( ?执行如下sql:" v# A' U" o+ u! X% p
2 S. M  F) J, ~: q; X/ d
$ l% {% w8 b! b4 s

* V" c' I' Q7 `( r6 Qmysql> select (ascii((substr(user(),1,1))) >> 5)=2;
% ~9 z# |2 Z- a% S3 f, Z# |, {( @8 p6 f2 o$ _4 @
+————————————–+
1 ~% l/ ]9 B' v- o5 x% [! i, \" `  _+ r
| (ascii((substr(user(),1,1))) >> 5)=2 |2 {! E! _( Y3 a3 ?: l+ m2 m& n
+ }7 B/ X0 K5 S3 f! z9 c- k
+————————————–+
0 M2 I( d6 q$ k  O* _% Y$ n. H: P4 ~( X* @3 i$ c1 p9 q
| 0 |
- E2 N% A1 ?% V: O0 o6 L' C' c$ [8 @6 ^0 t
+————————————–+
0 F" O. j! p2 E7 K9 I* j* g
: Z5 w0 L) l+ O( ^6 }即前三位不为010,而是011
4 H: g1 R+ Q& _3 w/ w, l0 |7 k2 {! y7 [3 u# Y

+ o( h7 c: W8 D+ G  V/ C$ i4 N# ^: Y) C+ t3 k: E( _
直到获得最后一位
* f7 U! s5 M+ c) E0 d" h. V( V* J8 l! o( L" O8 z- P% `" r" A
5 a6 i" a% E( o+ R% p$ M- k

, o, M  m/ r9 e7 O最终结果为:01110010
# q. ?& j9 Z# o3 k/ v- ]) I/ ]' K5 X3 R! U
6 C2 z6 K( M* Z# p
5 ^2 J7 k- T" k6 W# D
转换一下:+ z7 b4 J. g: a, U& o& u# Q

  I( n5 h6 c* r
/ W% R- G' c% B: w- I( s
6 m$ z. M# H$ H4 c+ ]% q! _select b’01110010′  r0 v7 K* D# R+ k2 Q, l  j5 @

1 a) D& s' F8 ?& y7 ?$ r4 k( X , _* h2 [. v: ^: Y

6 S; I# ^# p9 Q" W查询结果: c, r- q3 E0 R' e( w
1 k1 I$ ]2 p. u( J4 s$ v. W

% @' [$ x& ~0 K& E6 k! U6 ?; u$ c
; @1 M' \8 G; x( R/ \+————-+6 z8 Q0 m" ]; o9 l

+ v: W( {1 R# T7 e. k0 O* _9 |  V5 i5 m: e| b’01110010′ |
5 U$ r- V* A& E6 A: i- v9 D
% h2 }1 ]6 U1 F1 `5 F; `7 D! O1 ~/ P+————-+
! ]1 f. o! K& A/ q" {2 c/ i! [$ A7 B5 f$ F0 X3 |( d0 d  ~
| r |
+ y/ Y0 _" f/ U* J# w
; L+ @* u! K. I! z8 c( ]4 l0 j; w+————-+
% A9 M& Y5 _7 W+ h0 B
8 p  F+ P3 Q0 y! o" R: ~1 row in set (0.00 sec)/ P7 E) c3 C& K, ~5 v/ S# ^

+ o1 p) }/ `0 H4 i4 j , n4 \" V" j- X1 ^; Z5 x4 ?% S5 g

7 O' j7 d6 d% D$ K这样我们就获得了user()的第一位.其它位依此类推) V: f: H$ I, e/ j

6 g# t: m$ Z. O) Z( c
回复

使用道具 举报

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

本版积分规则

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