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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
% q; ?7 J% ]) B: U
- ~3 @, }9 S: ]$ c. i" |8 W9 U% } 9 V. d0 s2 x" W8 ~4 B5 O" N

) r7 r5 {5 E# ~( p! e* d下面将以查询mysql数据库当中user()的第一位为例:
+ D) `0 B* k6 w4 U$ G: P! E& C& C# J- E9 w
  E4 D% s9 }. e& ?  j6 I

3 f! \) h4 V3 Q; X' wps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)4 l( I. y, \) {) D1 w$ Y0 M/ }* [+ F

" C# j; {" ?% R$ O* j0 F
  p0 p# H$ d3 _- z5 M7 L& _3 B& y2 D" b, ^7 U% ~  `
首先执行如下sql语句:
- w" `; y2 o6 L" J1 I3 J3 a/ g# [- M7 |1 h+ ^. p, Y' q( H

: f9 u8 p3 X$ l! P- a6 j7 H
; x1 s! m$ u% s2 x. E- M+ Zmysql> select (ascii((substr(user(),1,1))) >> 7)=0;
3 B  J5 ]: O  A; w* K" J! ]  S1 p# Y0 o7 \  q6 {6 s

' M$ [6 p# {# H' I7 q; G
% f- d$ H3 X7 t0 V7 p2 Q: }我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的/ Y0 F- m' n7 U3 T, q- Y+ _* }0 p: X9 }
$ W- u5 l- V  X2 U- T; \2 D8 {6 F9 {
- S( u. M  ]% S0 b9 O0 G
. A1 W, i1 I* d. V1 h  v
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1& J% W8 c0 H* J5 B# o+ H" E
8 w3 {( [6 C: f9 L/ t; m
/ n2 N5 d0 M* Z) b

( K' |" O, j1 j& ~4 x如果运算结果为1,说明第一位为0,不为17 U0 h, b$ z. P7 U: k. a5 T
/ m4 D* b# ]+ s1 r  w+ A) `
2 Q8 F5 R' s+ i
0 [* ^: J& c0 x! G/ p+ F
+————————————–+
. R! F/ i; [( N7 u$ _8 s" L: g; I, E( }# Z1 ]% R' V
| (ascii((substr(user(),1,1))) >> 7)=0 |6 |+ E3 Q- {$ X5 S3 ?

% I7 |3 X, M. C# e4 _+ t) Z+————————————–+9 c2 n; s) Y" H# L2 b+ m8 ]

: v5 l3 R- C9 f5 w' k. Y- O# T  D| 1 |5 E+ S1 f; R' _/ d& C/ Q
( `  b4 }5 H. p- Z# g6 l
+————————————–+
1 W  d1 O3 G; g. w, |8 g/ }2 v$ u0 L+ ^0 \4 t- J! N, x4 H' C
1 row in set (0.00 sec)* m" ^3 G% y3 y6 u: m
+ i5 P7 @3 T2 G. N2 h& f
这样我们就确定这个8bit的ascii的第一位为0
4 W- k' v- h% h5 z! M: e$ Q1 W" b+ p: U* }1 U' w" O
7 E8 O: J2 A4 L9 H; [
0 _6 V4 F3 k* e" G
第二次我们来做6次右偏移来确定前两位
. g3 Y* y/ x% `' \; e/ w8 m1 d2 ]& i$ W

' y5 P: r9 r; p
- N( }0 R, ~' ]4 |$ Z0 q前两位可能是01或00,即依然可以与0做比较,- X: D9 [. r  n5 ~* n

( ]; _7 N8 t- mmysql> select (ascii((substr(user(),1,1))) >> 6)=0;  U& U8 A, v$ K% B7 _% \
* Q  g6 f9 l8 s# k0 B& H
+————————————–+3 z0 e, v5 J4 p( w# a- H2 {  \3 h) t

+ Q' X& u& V7 ]" m5 R6 C. [- n1 Y| (ascii((substr(user(),1,1))) >> 6)=0 |) O; Q' R& B  _; S9 ^; K4 T7 d

/ `7 k' }* |- a# A  T( n4 r+————————————–+
2 y4 h, t9 L7 f0 Q3 m  i: F9 V, a0 L- y- y
| 0 |, a' V, [+ }+ I- N
! T* U! e/ B$ G7 o8 ]
+————————————–+) J7 T  }7 {$ ?8 y! b
0 y( N& k% J. A1 X6 h' M$ y" P
1 row in set (0.00 sec)3 }- Z' _. k+ }( s+ V& O

9 ?2 X9 l1 ^( |4 n+ }: @ 0 u. t9 F0 [$ J" \
1 q% g0 X  q3 i# u0 y4 L3 C  U. }
结果为0,即第二位为1& Y5 J; p: P/ K2 v5 O) H

- t  D; @- ~0 u  \5 y( n & s- H! C+ n+ n" X9 L

' c: ]! u# x, `+ o+ a开始猜测前三位为010或0119 S  x% M/ P! D' `) Z" ~. X+ x
6 j- U9 V" w! J6 W% U2 h' t2 f
; ^6 ?. H" N. _
- k  b; M/ I; Z7 v" J6 [  n
让我们看看010和011的ascii码是多少  ^/ q+ d6 ?8 j4 c1 u; v4 v% H

+ \, |9 s1 e7 a6 ]( i$ k
9 `' V; O) y/ ^' T
/ L5 T1 ]' v2 q. _( u/ q3 p分别查询select b’011′ select b’010′9 D5 @: ^% C8 i  f, k! l

# k/ o. O& V6 o3 b' u
5 W$ i$ y) u6 g4 D: Q& m( g" M7 o* ~6 i7 ^- s. t6 y2 l+ B; @
获得结果 010 = 2 011 = 3
: X6 B- K  q3 d  K* B  v7 `5 P1 W# p) x9 a

% e- M2 W- P0 h7 Y4 A( z$ T' r% `7 k9 @6 T
执行如下sql:$ [7 M& n& W% a- c; ~

: u3 t" r: k( p# y
1 B# B8 G* S% D0 w2 r
5 j4 z- u( p+ K6 |) l' fmysql> select (ascii((substr(user(),1,1))) >> 5)=2;# g0 @& D, t: y; B

* W( m& h. u2 t+————————————–++ o* d+ a: y) d9 u  n' ]( u! N

# K6 D9 z" N: Q% ?| (ascii((substr(user(),1,1))) >> 5)=2 |- \& I$ m2 o2 b6 }  s% H- k: [

9 T3 }* T" B$ {0 Y- w0 I+————————————–+
6 @' ^5 ~) `9 [4 ^7 [2 W  J2 Y+ m; ~
| 0 |8 ]. p3 E, V& Z! |" I

: |$ P. A& E  d+————————————–+
+ z2 C$ R0 ]; V# V% @( R- r! \; g2 j4 \* v  _5 B# r$ z3 u
即前三位不为010,而是011
3 W4 X0 m3 L: u; z0 G+ Z# V; V4 ]( c

9 `& Q$ j1 y6 a+ v
/ r3 i- ~0 Y5 \" F$ A直到获得最后一位
' i* e0 B# w% W8 F( \' u6 b  w
2 _: O* \9 D" }' l; p, H
: a" m3 ^1 l- p+ [$ ^
; C$ V" l; o) ^$ T2 r8 H  |最终结果为:01110010* [9 ]6 X# y; V# R6 ^; z
; [/ ~  y& ]: T3 t7 H4 u4 Z  ?7 m- C

$ H: C: t1 ]2 k  {$ b* u: Z" b
: i) ^' \! ?+ z: F& K% h转换一下:
* ]! `3 j" m$ y7 Y- [
. M% U& ~4 f1 Y6 M! Z% S; U
6 `8 q  k3 r2 F% [' w+ Z4 ~! |( X) Q* b" e' l% Z6 F
select b’01110010′
- _! G: {. J4 z% M2 X, D0 P7 k. _8 B- X
; Y* S/ `) c2 m: C

. [" G* l) ~) R7 J; U3 ^查询结果
# O3 M" r8 n0 X2 P/ C" A5 h& V1 [% a2 s4 x1 m

2 U1 I' M# G# c$ W4 ^! r9 ~7 i' }' e# q8 m: ^
+————-+, Y8 G' ~! L' o: k
  H/ c: C* v9 P  Q, M3 C  Q
| b’01110010′ |
/ u( W  R. U, q3 d( h+ D% H! u8 R7 m1 a7 K
+————-+
% K) f* d4 o7 l) {: A& P9 S6 N: L8 i" B6 n$ b
| r |7 F4 U  u+ Y- [, J& w

% Z1 V* {# i" G; ]4 \( i! _0 b+ M+————-+
! l3 a0 x( [/ w  Q( }. x# w7 ~; {
5 R6 V  \) G+ ]  ?. t5 w; Q$ q1 row in set (0.00 sec)1 [, M# {' t0 c6 K- D! `

; ?( U$ x! f# Z9 W 2 m6 v; U% k8 e  @
: v$ {' U2 k5 C" y0 r$ B- r& l9 K0 j( g1 V
这样我们就获得了user()的第一位.其它位依此类推% s0 r" q7 [7 t2 m& z9 I- N

. u4 J+ D, u3 {+ I* U
回复

使用道具 举报

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

本版积分规则

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