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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位0 f# V" G' J5 f7 V6 @
3 @5 l( S( u  y9 G7 ]

5 Y* D4 N! [2 w  `0 {( d+ p5 G* l! i, w4 B$ W
下面将以查询mysql数据库当中user()的第一位为例:
/ Q) I* p# G1 t# S3 p: @: k1 |. e, l' ?$ R3 K
8 l* Q, U( }3 t
. j% W  a9 }4 c4 _/ y2 j0 f
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)) A: K: w: t+ t  d- }8 [- g; d
" y' ~0 d4 y! t
( \8 G$ Y3 U- x/ x  G( P9 J
9 _) M9 a! h8 A- F  S' k# z
首先执行如下sql语句:
" K6 _  z5 a6 h, U6 T3 O
8 {* {1 R% y+ K0 H, U$ l
# [2 }. ]& S: h" r! _6 N" x) u& T/ D* t7 ?: |& h& p
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
7 L- y& P0 t& g6 E7 Y8 C: z4 h- b- r( m, ^% @9 u. E& k

* [/ `6 x* ^! V
$ C& B# \7 G4 v5 ^0 i6 e) b0 K我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的/ j& Z* b3 g5 f# p

& g+ r4 V! N7 ]( x
# z% v: n% E" v+ T1 t: F+ D
: B; \4 \3 v5 b( @第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
% ]! Q& ^' p. O- k7 L) j) j& S- O
1 ?) X5 @6 Z2 `# F2 |* H2 A1 P( N( A
& ?/ t1 A- ~# _/ Z; ^/ M9 y* O" E
如果运算结果为1,说明第一位为0,不为1
$ V4 `- U& N+ H/ U( q0 U/ u2 B! f0 }; s
5 t# u; A1 Q9 M' A- @% r

# g$ B7 P! C8 E" C6 W6 M" G+ A9 y+————————————–+" m* t- v$ |! i- u1 _' i- t8 j$ F' ?) A

9 |+ k3 S( y! \| (ascii((substr(user(),1,1))) >> 7)=0 |" q, _/ p8 N) c7 A3 D4 S
6 x% t- @% R; [9 K9 y! m
+————————————–+/ u3 z1 @- x, w% [

/ d' P# s8 j- r  N0 q# n| 1 |3 P- H( K0 Y$ g- }2 U+ c
' w& d$ a/ y  n$ N" Z7 |: h  l) M
+————————————–+% d: M# ~) b% L9 m, x0 J( g& T

8 x  H1 U. h+ y+ o1 row in set (0.00 sec)* V4 g' V  P& m- d# |
0 \( n* G$ `7 C  K4 u! b, {
这样我们就确定这个8bit的ascii的第一位为0
% d9 E- Z2 M7 S! F9 [. o& g7 B; I; g8 ^2 h( u& R" I; B
  |* t% q( R: X2 @- z
5 ?- L3 y  l* ?) o1 V
第二次我们来做6次右偏移来确定前两位
4 c  A* h. u# ?3 L* T, b# E7 `) j3 b: O7 u6 i: T0 Q  C0 F# r
  ?: Z& D! n  ^8 x
- Q& V( b: [# f5 T
前两位可能是01或00,即依然可以与0做比较,
+ G6 T6 P1 |1 L' l- m$ L1 `+ b
/ j5 g# z; l9 H- [  e, lmysql> select (ascii((substr(user(),1,1))) >> 6)=0;% ~" ^" K$ j/ @
6 s2 @; O" J: O7 m7 d& b$ m3 Z
+————————————–+
% _$ I1 }, |' [1 w, `
3 r4 D/ p( c3 W$ z9 O4 u| (ascii((substr(user(),1,1))) >> 6)=0 |
0 `* r) q3 n& q+ S, w2 u4 b  S/ w- ^1 J
+————————————–+8 }9 l6 e7 l+ @+ v6 y; K
6 `1 Q5 E, P. q6 E- S
| 0 |, L; r/ r) c) H7 p+ l
. Z, _: ~- ]( I3 J4 w
+————————————–+8 M8 j- }  W' A5 G' O2 W

0 l# U3 [8 v2 h, _$ `7 T1 row in set (0.00 sec)* h3 ]) ?& I3 |/ E7 c/ g4 Q
6 P9 F) J5 M8 K5 |- O
  [, B2 j$ I. @" U
, o# C- [: h1 p) W+ Y. u0 F
结果为0,即第二位为16 D' F. h4 [& G2 Q" @) R

# F9 a, K& a# X- ~  |1 a5 u $ s5 t( o. N+ N6 y' P! Z4 u5 Z
8 d; A$ u5 d- @9 L& C
开始猜测前三位为010或0117 n( U% v" o' s; e+ E1 ~
: A3 |8 O0 u. \2 O

" }% X' f% j. E6 _
7 p% X: v# N. ^3 R% H& T$ Y让我们看看010和011的ascii码是多少4 V1 q' K' X$ t# ?* x( P  H" D

+ \" C0 c" Q9 y 3 D; u% }0 a$ L, @7 \
, U! l0 V4 y, _
分别查询select b’011′ select b’010′
  ^0 l4 V4 @  M( f$ |, f; r; ~
2 k' I( U* a/ H: Z; H
$ h. P4 h7 T* }. D) f/ q4 n5 N( [
  H* @3 c* m3 Q: R; [获得结果 010 = 2 011 = 3: E* H, l* ~# L  ?3 P* X% p9 P" o* c+ O

( s( ?7 H6 k; P' N
% ?, @% j2 k. }6 @* J
3 T& I3 Y( [! P$ O7 g- Q执行如下sql:3 z. h: c* {; d
) C7 g4 n! z. o3 A3 _& [' Q3 S
5 L1 ~) q; @% w( I6 k/ x0 S

& f2 p& p( b+ l* ~1 ]2 j3 u6 ?mysql> select (ascii((substr(user(),1,1))) >> 5)=2;7 I* J4 L& e5 O% A1 P7 Q' o+ t( B: C

+ p9 Q: B% ~6 I$ L( l+————————————–+
1 L/ k( m. O, i1 I5 E8 H! i' e; U- [: E5 U0 X  R6 D9 W0 x: }
| (ascii((substr(user(),1,1))) >> 5)=2 |9 p; V7 ~% }7 V# @8 R  O6 h
7 g2 Q9 o5 i8 U; q
+————————————–+
/ Z3 c: Z# C9 x. a- ?* w2 B  [1 g5 Y* B
| 0 |
0 g- }% q( ]  D5 i( o) k. W" n( E1 ^( u5 K' a
+————————————–+) z* I* G. W! K4 _8 E
- x& S4 y" w, D. N( x
即前三位不为010,而是011& }( V& ^. W  i" u' ~9 c/ v

0 q+ c  r4 z' A/ k7 s7 V1 ~
, m/ E6 N0 p. W, u, s) a% Y( l: {) ~- n$ Q$ S2 S, _
直到获得最后一位
: b' {# c& b; b* v9 V) b5 ~3 v* h! ~* b" y4 G$ W" d
: }9 f6 Z0 B9 Y; P- k: J

& t9 i& d8 G. V. t最终结果为:01110010
! P4 H9 b5 M1 f1 P+ R# M  b  `' R: k4 E0 n6 x

  Z9 ~6 ]0 V/ x$ P& ]( R1 `6 D7 r; M+ A- a: j# X8 q
转换一下:( p& s7 Y3 ^. z1 E& I

& o9 U( [7 p& |7 u" z, a$ x  P7 ^
/ ]  K# E- u- v* [/ r: S0 F& b( S7 K* c: P$ y. }# I( m, y6 k
select b’01110010′
" T! s* {8 {5 F/ {+ k  O
* Q# u- ]( x6 n0 Z% B ' j" h) a& N6 I$ C( N4 H

$ B+ \, ~9 @2 c4 P1 U- j2 v8 Y3 m查询结果+ D/ n# y7 d& ]4 J  [8 K8 C7 m
5 o1 U# H& k' G2 I- D0 @

# u$ f- X! V3 c, ~- s: m
* ]7 l, W- w  o0 r) U8 a' _8 p+————-+3 n6 X8 v2 y/ V" v5 ?3 }/ D
6 d% M0 }% D' b! m+ V
| b’01110010′ |
' g8 }2 u( |, B4 M5 J  v2 O6 E9 Q/ O
" S) ^4 v* `. n3 w+————-+& i! |# [+ ~7 f# R9 w
5 {; s! P" b  B8 b0 N2 b2 Q3 M
| r |" A- t# m* F! P$ z" Q, M
" E. W) t9 _) C  F- N4 n, ~' ^6 k
+————-+
8 }% m. d$ e4 R8 V1 c0 H+ p9 ^: A/ o* K# {! h0 |
1 row in set (0.00 sec)# b% o) i$ K' K

2 o5 P' @& m- ?: y: n2 B+ E / q+ e$ A" c( e0 |5 ]; a& S8 P
% [# l3 N* a5 L" m
这样我们就获得了user()的第一位.其它位依此类推4 O' ~% ^6 v+ {8 g4 W

3 E+ m) U" L! v& y# F* j% e; W
回复

使用道具 举报

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

本版积分规则

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