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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位) i+ H8 Q1 g6 i  g$ U) o8 _7 {

) U, m# @  b. Z0 G" N : u- k- W/ n) D# k. f( i4 I6 m

2 m( |/ k: Y0 X. y( x, f% ?5 `( y7 O下面将以查询mysql数据库当中user()的第一位为例:
* b  }" ]5 p* ~# z( u( ~/ ]6 O# P) u4 k/ ?/ ?( E
3 {; X) l' i; |" u: ]% K6 U

# A! t4 t1 w' d! [2 W6 eps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)0 ~+ n4 t0 z1 o9 g7 p# f6 H3 A

: R1 u( ~0 g4 |! G1 o , j2 I) H4 M7 L$ e
% q% n& w, L4 W+ N  ~! o
首先执行如下sql语句:
2 }: b5 Y* O: Y7 J; A$ M- w1 g3 T  u( D" z5 v! B

7 L* G% [6 |& J8 s
$ \7 Z2 h: u5 Y  O% {mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
$ ]. N6 U& ?+ r5 B0 ~% V% ]$ k; G; b1 X+ X8 F

# l5 y  p) ?$ Z
: I, M$ T/ X" N3 c/ v6 P2 p) u我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的9 W$ {$ A4 r4 M( x3 P) ]

" {; Z! d1 L) [: _5 L) J9 z
* R1 _9 h6 }0 D& t9 b4 e
" W; C% N* W" b第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为17 z1 [7 G8 G5 P4 p( h
: V5 ^  _. ]1 x$ C8 X
+ C( m5 }% M. _! u8 W
8 u1 F7 t2 j# }" u
如果运算结果为1,说明第一位为0,不为19 }6 m( B- N( m5 q

/ m- C6 D" S$ j ! @' S3 m8 o+ n

( k+ ~, U3 ]8 V( ]9 l! G+————————————–+
0 @5 n$ J! O1 O8 W2 o" i3 K
  _4 p4 |) E# Q2 d3 p5 ~| (ascii((substr(user(),1,1))) >> 7)=0 |
( y4 [2 }$ O' W  L& L, b7 M" q' M7 V0 `( G, h
+————————————–+: h6 Q7 q. W. U% W$ X: b! Q# M* K

5 ^% k5 ?6 S9 d5 o' D1 m| 1 |
2 w1 D: `8 e8 T. A* y
/ L# S1 U- [% E' o1 H3 L$ Q3 j+————————————–+/ a& \5 U, @4 g, p3 o. d4 B

2 O* x- E# L2 F9 Y1 row in set (0.00 sec)
8 C0 n( G: p4 x9 q/ ~
3 h4 [: c1 O! P% K* u这样我们就确定这个8bit的ascii的第一位为0% \. l' s3 O1 q6 ~6 Y/ I
! ]+ ~9 [7 V4 R" n& D: r

4 V  c0 P3 |: a, w3 J
$ P4 M. f% o! Q# Y9 S5 @: _: O9 I第二次我们来做6次右偏移来确定前两位5 O9 f- g* o  q3 p: R: o' \

& o2 }: s4 R' q4 ~* e + [% ?4 t; P1 N  M  r: g& h. T

3 E& l) J5 z, `0 W' ^4 [4 N前两位可能是01或00,即依然可以与0做比较,5 D2 ~4 N9 r8 q9 g, p3 m! I5 c' H8 Z
  y) m7 r4 T3 s; \0 D! A
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;; B7 ]( G  K: l' j* e+ J9 s) ~

7 z" ]4 X6 r; c  M9 O$ V+————————————–+
8 v1 c( F) {* o. i. l
5 y1 t. `( d9 ]' [3 b| (ascii((substr(user(),1,1))) >> 6)=0 |
. ~; V- X/ L- E9 Y8 ^, ]+ F3 z
# J' I4 a0 }2 c- q3 G+————————————–+2 G, U' r: a. }) X1 f  s" f

$ f4 G6 x, w4 A6 R" F, s+ ?| 0 |: i/ Y: {) u* G

" ?1 [; L/ q( o$ J# E" n8 S* W+————————————–+
8 R0 c) S+ |. _/ A! L- ^; k/ _( |, E: ?6 j% O3 i
1 row in set (0.00 sec)
2 }" k0 K& r8 x- [
& z4 p/ r* K5 r$ c+ L9 m5 o
% u* O3 k! R$ K, B
: W% M$ f( Y! j& v结果为0,即第二位为1
: W+ `& Q2 {1 @! z) F- M; r. D0 U- ~+ P! t1 g
7 @  `& {" }9 J
, M* w: N; ]4 x# k
开始猜测前三位为010或011
& z3 y) `/ A+ A2 k
2 V6 v+ F2 L+ I" Z* X % K" M/ [; C8 V6 c! U! C$ K

+ F- r5 T7 {: J6 `$ F让我们看看010和011的ascii码是多少% L) D# ?% D' Q! \

  Y( U8 r9 |7 H% _) G4 m 3 R$ F- o+ b9 y, }% n, L% O9 |

- ^* K9 U% a. Q* f" p# N7 o' e$ _6 I分别查询select b’011′ select b’010′8 p, X  i2 }: O  j; n! c, r+ J3 V

7 t# _7 P% E/ u ; _9 V/ m* C, T- S4 o( H( y5 H, y4 q1 t4 ~

8 s$ R" G9 p' R( ^8 D! O$ O' l获得结果 010 = 2 011 = 3! Q/ g% t! A2 c' Z0 S

5 |0 B6 _0 ~4 y  D" I$ |* z : Y7 J4 P$ J+ F) V7 ~
( Z+ f  {& L5 f7 T
执行如下sql:
  g3 ~5 C+ X% M0 u6 K
) B% s. _2 d2 T  K
3 h! X) ?0 v4 \/ K
/ {! ?. O7 A. l$ mmysql> select (ascii((substr(user(),1,1))) >> 5)=2;
; y7 O4 |- e' m4 |8 q- `7 g0 D
$ U* P  u  [4 e9 F0 t8 P+————————————–+! J1 J8 d! {+ ?2 u! e

! B, [# n* X. b" u8 N- h' X| (ascii((substr(user(),1,1))) >> 5)=2 |
- t* G3 b+ {. ^' I1 j6 ^+ }4 c7 O3 u0 R. B! W: p7 I
+————————————–+
' Y( B  p% [; ]/ Q
9 y$ k$ d% M6 }/ n8 z! m" k. p| 0 |2 w1 q' r$ b! A" ^( w
! c1 B7 y, e& m. C
+————————————–+
; N0 A. Y$ k% {! W# J; N+ u' S' o  c5 f1 i# Z( }& e
即前三位不为010,而是0119 N) g2 {: C- l/ X' K
# u0 E' F5 G: K% ^6 U8 I( L
' i4 z0 t6 p' {/ ]$ T

# I, F  Z# D/ C/ W" ~" {/ c9 }$ ^直到获得最后一位
1 A) ^4 q4 C8 S4 p3 y* C/ J) g: N; e8 L! Q; \0 }

0 k, @* @4 w0 }( i2 c; E( X' \+ h) Q6 h; u4 ^) C
最终结果为:01110010
7 j: F% V' n' {2 Z3 v' Q  B. V1 H$ F- Y4 ?
' p8 _3 S7 e6 X# l
! O8 w% r6 N) z8 \4 L
转换一下:" y! h+ i, r+ `+ A- q. v

3 j1 N, V+ x4 o9 Q; ~ 4 V3 O5 G# Z/ ]# b9 ?

; S9 x# a( R+ v/ S+ C7 L1 eselect b’01110010′
' O& q5 |, E9 P0 Z+ D) T) a' q4 s4 _' Y% b
; @8 c2 x$ Q; e' g
  f, E+ H9 r2 Q9 v3 ^
查询结果
* M  l( q5 C1 c  o4 r# ]/ f! A4 u* q9 i1 L0 T
% B- V2 J: G2 c" E: E5 a: ]& d
4 O3 t. ^0 X% H% u# Y5 y
+————-+0 o6 y9 h8 j, H7 J7 |. l' u. L

  K# q8 V* e6 R3 `- o| b’01110010′ |
+ M) I) P7 v# K, Y7 x3 E3 F( T8 R* t/ O2 d
+————-+
6 `# J" ?$ W* ~+ j
; {5 _* c( C" J, T3 T: p( e8 o% g" }| r |
5 z8 ?* T% L( H4 K1 Y4 J
( m) k5 W' d, Y# x& ?+————-+
7 R- R% }) `% N* o" s9 v$ \1 E$ X
8 Z# {3 T  }' y) H1 m. v9 q/ o! ?+ J1 row in set (0.00 sec)
5 D/ |0 l+ T" M* Z7 C+ a) P
& w1 {8 `' _  {. {( F
  v1 {" U! y* e% C0 z
( d( G, o5 q1 v9 H这样我们就获得了user()的第一位.其它位依此类推& d9 y+ E7 M  q- M5 u
0 Z. P  D" M6 A! M" t
回复

使用道具 举报

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

本版积分规则

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