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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
( L$ a/ f  @9 v. @; q
. _' i. ]. h0 T$ M$ ^1 U " n1 C5 u2 s1 A  V& c& |, z& d

  Q3 N& m7 p* M- e下面将以查询mysql数据库当中user()的第一位为例:6 K1 u* {2 j9 J0 }# Q
0 r% w0 A) C2 M2 F
" L, E. n, x7 `6 ?5 Y/ @
1 l0 s! U- S3 Z  [6 ?$ z& E
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
) W/ r. _. T; V$ L0 n$ f0 e
7 y. Y4 P0 j3 S/ y  X
% w0 J8 _; @$ K1 ~& P8 v7 z5 {
1 |5 F& t4 A2 _# q( P% ]首先执行如下sql语句:
1 X5 }7 F0 Z- {) y, i
: v! w) ~# I' G, D# G9 f6 |! F: ]
9 r' E2 ]- G. g2 k1 S2 X/ K/ f( |& J; @% p% o/ Y/ T- ^2 `
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;" ~/ M# b/ u. z1 q. \) W( [+ r1 U

9 t) r% t) D/ @ . `4 X; j. x1 Q) }1 R

* B! d0 z4 H2 G7 D" \7 u我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
% x8 x  i/ c2 }5 x! Y
: x7 s* P$ {6 d7 U/ I' I5 F) R . E: _! [  c" h; @* `. C
& ~0 p7 ?2 X7 z; t5 }: C
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
9 c4 |  O. ]# F2 Y6 Q# w
2 }! ]0 i) a7 L1 u: D: ]; k- ? # K! z" B4 R. U: Q& n

3 J& Y& a' \% g4 _1 [如果运算结果为1,说明第一位为0,不为1
* N9 \( g$ W# b* g$ {) U& `) |9 u( q( D

" K/ @7 r9 C) r  K3 c, R: l7 e$ N4 A4 p  h$ i1 s
+————————————–+% q8 y. P0 i' {. B+ G7 _
1 P# z2 Z: ?5 N% D, F1 f3 C8 @
| (ascii((substr(user(),1,1))) >> 7)=0 |! K  ^7 @, m- u3 R% P7 i1 v
7 v; D) Y, c9 k' O9 c. N  \- ^
+————————————–+
/ g. [  @' p: V" Q
0 `4 C! k. ]8 C0 Q; P4 X* f| 1 |
; Z( W) U) D  }- t8 V; s  `2 L5 C1 _2 r; i. m$ I
+————————————–+
5 ~% l' [9 s1 I) J+ K% o- [+ o
% Z$ x0 ?) g) T9 X8 ^$ d1 row in set (0.00 sec)
; }( c" ]  J4 y- ^/ v, n+ D( `
  c+ `- X- p0 G: l这样我们就确定这个8bit的ascii的第一位为01 U5 k7 F2 u4 V" i
% |3 y& H  y& ~+ a8 \* Y
8 r5 t4 W( V; s/ x
0 N, P9 F* K1 @1 I  ?
第二次我们来做6次右偏移来确定前两位4 o! ~8 p4 E" S, G5 c8 [  @9 h
+ R) j( i# I$ L
9 }1 c( M5 _6 k: S6 \4 C3 G
6 I$ l7 ~. e' n+ Q& L
前两位可能是01或00,即依然可以与0做比较,* `5 A/ b0 o( V5 Z, I1 G
4 N5 s2 i' a0 D0 I  d
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
% v5 U% Y! i1 I% C: x: K' k* }+ n1 _- ^6 C3 H
+————————————–+
' V0 S7 k# Q2 U% o8 s; t! T
9 y( z5 o* L" R# F; X| (ascii((substr(user(),1,1))) >> 6)=0 |
6 q- J) v3 v( D
0 U3 Z6 Q* K+ v+————————————–+2 H7 i! B, i" F" d

6 `( G; w* Q% Z| 0 |
+ P) ~/ L( t9 a! m6 K* S/ z# m# i2 B9 a( Q
+————————————–+
- T0 t$ x3 b# F" |' h# h' r: l+ V  \  n
1 row in set (0.00 sec)
) B; A% `0 H# W; s( ~( b
* M6 N1 H; W/ H, _
( ?9 ]" r4 u- n( W. P' d4 Z& _  q- B* J" |# G" ?0 Y
结果为0,即第二位为1% _' u& A! f9 c9 [1 b; i

  A  s) f- b0 C+ d5 ` 4 K" W2 U' x) N- k: c2 o

! I/ u0 r- ?2 G3 G开始猜测前三位为010或0113 S! V# h3 `% }

, _: a8 x2 s: u& { " a* n* \2 P( b' g6 u

# i" N' U/ f1 L  A8 L) c7 E让我们看看010和011的ascii码是多少. A! S) }8 k( s* o4 s* I: G9 e: ?
) M5 H8 H6 S/ Y, ^

3 d/ D8 S3 q1 r( E7 u* e, L" l/ L$ l2 ]- `* k& c( Y! w. i
分别查询select b’011′ select b’010′0 z% [% I! E+ `* i( ]

8 U9 p8 y0 j7 f4 k! L5 l; e - d$ j) b9 P) {9 _; a6 a+ p
- F9 t  n& a# B0 t7 J; g- `# ~
获得结果 010 = 2 011 = 3- Q3 B7 g% {: N/ D- \; {/ |

3 u' o: B4 z, t9 _
- o3 m4 _+ N$ S; u% [, \0 |7 g* v0 g. ]3 C+ h4 E
执行如下sql:
% |( ~3 }! o3 q' t: h( a
6 Z1 u9 l9 C' U/ V6 ]  P$ q. _
0 I! f3 Z9 R2 ?$ v' S2 w2 k$ k4 k) l0 [
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;8 ]2 G7 T2 Z2 Z

" f( k0 _5 {/ U3 `* X; j; v+————————————–+
4 x8 P3 m+ R1 K" T
+ S# u1 w$ N* |) t0 m| (ascii((substr(user(),1,1))) >> 5)=2 |
6 Q  A1 Z- C/ t9 G% |# b
8 g) ~4 ?1 ?2 R1 H+————————————–+. H9 K% R  a5 K- a8 k8 f: x
& t9 R7 U/ V% o0 P( @6 L+ G
| 0 |: [3 `! s4 u+ y
7 c* o3 x# W, U& x( P
+————————————–+( D* ~# M- \9 F, h
" t7 q& V) d. V
即前三位不为010,而是011
9 _8 l5 b1 b: l/ d' C* @' H5 D# v# [8 k6 v# Q5 p

9 J1 e5 ]0 L3 G6 M( t  X6 {' a9 k2 k. A' T) V; i0 ?  ^, j- h
直到获得最后一位
# S, z! W% S2 C9 x# l: o- b
3 e/ |( j' j2 |" {' ]% } # P1 z1 P0 k1 G4 X( J/ ~

/ e' R+ G- G/ k, t* D4 \, c  N- O最终结果为:01110010& n0 O) u6 w; v  f3 S/ s
# S' A% S# W9 e9 f2 U- V9 U

3 E7 h3 O- P5 M% A' ~
3 I9 x1 `: g8 `: o0 q* y转换一下:- t' K% {" |7 g3 W8 Q

' u8 O* s' `! O& T; d 5 J3 S. U$ W( J0 x' _  F/ }6 Z5 S

* A( i* j6 W* u6 q- [0 n( _! dselect b’01110010′
9 U8 K  M" a0 ]& A
+ ^# x  a0 t; i. {0 a& e( C! ^1 L4 ^
# v4 B" ~$ l! i
8 k. h; k  p, B0 e查询结果
# t& ^- Z0 {0 X, j( w: k2 O/ x
9 H7 H  u; C# T8 P% c# K8 s 7 R& f# v4 @% y5 L
$ \9 ]' e' [& `
+————-+
# c% ^/ O; J$ _1 l- _% e5 @4 C4 e' u* F( N
| b’01110010′ |2 R4 y' ]* V7 Y1 _

5 x* c* ]/ X0 K! A1 B6 M, y+ S+————-+
; y6 l- l& d1 X3 A
0 m: z; A) U: e  k& Q6 u) p3 u| r |. R2 p5 m/ f; B

$ L. f. A' ~* Q: E+————-+  w. P0 Y4 q; x# w$ S% Z: X7 o
% i! ]! e, U, x5 o1 ]6 y
1 row in set (0.00 sec)
! H, u& X" k7 M& a! P
$ _/ ^) @( E7 K& B' c
& c+ o7 H7 m: \3 c% I, G3 l3 B. U& K% f' n2 b+ H, \' E8 ~0 M7 Q
这样我们就获得了user()的第一位.其它位依此类推2 Y2 j  X9 ~4 O& W) _& P

7 r0 k& T5 G/ r1 I' N6 ]9 k% @8 B1 o
回复

使用道具 举报

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

本版积分规则

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