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

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

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

4 V% i2 `0 b; _4 [
+ j4 L. ^1 }8 e7 }7 [( s0 d
( G9 `1 n, g! C& E; j, U5 p, T下面将以查询mysql数据库当中user()的第一位为例:6 S) `5 l4 ]/ b7 ?3 W7 f
2 V: N  N+ f/ w/ C( c1 Y
1 t" _# i. _1 p9 W2 `% T; f0 e
1 V: B  ]3 I8 W$ _" C/ e
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
  D8 G5 o; g5 t- ~4 e4 X4 `- F$ n9 T4 ^2 Z% s, G8 s* k
) c) C2 K, V+ e

7 d, o7 r, D: X3 T1 E2 U首先执行如下sql语句:
1 G6 E/ h$ L3 i( `7 C  a- A) z% }) m1 `! h" ], l

( W  F" O8 z- i4 q! }+ `$ ^6 |7 d. p4 n  L
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
1 z$ j" \7 a5 z; R' k5 L& N: ]$ }3 I7 ?* Q1 a) x# M( E
. \# r) E8 D8 h

, Q; f6 h- j. }0 W. e) n我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
2 V/ u4 i# y) H% J% u( a8 ^
- s. ?) s+ G6 t; y, w. E 7 u3 P0 H3 e/ `5 A1 G9 ?
1 E4 ^9 @" R5 _+ E+ o
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
. V1 \5 h9 n. F7 A: Q& w* r6 O: c! K4 E* y

1 k- J6 v1 _$ E5 X5 E0 `
- f; k" M6 k" m5 e8 v, R6 W2 M如果运算结果为1,说明第一位为0,不为1
, i1 l0 ^  _: @/ k  a: H
. T, T5 g% O* B4 a1 e5 a( t2 [
; p( K  p4 S; K6 I4 [  ^8 j/ S$ I3 |) f* M0 D6 w6 z* D
+————————————–+
( O* E0 d8 {$ C$ _) }. G
  K' x4 _* H) r1 Z| (ascii((substr(user(),1,1))) >> 7)=0 |
- ~) t/ U& A. i" D4 k) p1 V4 c) c1 R7 {
+————————————–+3 e9 G2 i2 [5 D* p2 H
4 ~1 g& r4 t2 @. z, L; B
| 1 |
& s4 g3 j* |: H. E1 n. X7 @! d- Q& w  {0 S4 w
+————————————–+
' I' h$ B$ y+ M3 Z* A, \5 [/ l5 w/ Y* }+ @! @* ^
1 row in set (0.00 sec)% E7 c8 n* Z4 ]0 ?$ h7 h

/ [4 k( B6 F% S, H# A' r% o! B( _# r这样我们就确定这个8bit的ascii的第一位为0+ l! o* W% f5 b1 ?: t2 s' d4 V( m& u
+ n  g8 X2 w3 L' J2 ~* h3 e( ]
5 Q) w& l% ^' a$ \. ~
7 C! ~8 A/ w! r
第二次我们来做6次右偏移来确定前两位: j6 C% D: s- D$ D) |

6 A) T1 L! G& y4 Q % S2 K2 i2 A& x1 i- b
/ S( J% K# f3 N! S
前两位可能是01或00,即依然可以与0做比较,6 [9 a  n! x0 X/ A4 h

6 T0 u' m- N% T& M; vmysql> select (ascii((substr(user(),1,1))) >> 6)=0;# T" W* `+ i( M  y7 `! O4 ]( m
) w# m5 ^# S1 h) Q9 p
+————————————–+7 `. s; F  B- p1 ~' [

/ s6 i+ J1 ?: b/ U| (ascii((substr(user(),1,1))) >> 6)=0 |
( g! S' a3 O$ C5 g8 y3 C
  D- }: H; y1 K. L. N) K  j" N+————————————–+- O0 c7 J0 f( ]4 Q5 v
8 g; [1 Q& r* S$ T& Q" ?
| 0 |
4 f' y: `9 S1 \& M$ A* h+ }5 d! S: U7 E# }4 [) T
+————————————–+
# Z: n! D  o9 j8 N9 F6 S% ^% s+ M; Z- ?! A4 Y3 U  l
1 row in set (0.00 sec)
# M+ k5 K3 q( Z3 F# V$ q7 l% D+ X& C- a) ?$ G
: q( A, H6 L3 L% Y( Q
, i8 [  l  r  D2 p0 m
结果为0,即第二位为1
' Z9 G" z7 a' {( F* K! N' L: T+ {2 D6 o' \0 p5 G7 |
3 G  e% c1 y' N2 O# Q4 W& `+ ^

2 ^* u7 X/ e3 R; W$ ?! l5 @开始猜测前三位为010或011" @, L3 ]6 L  t6 Z8 G
- }2 J* [/ v9 B# S# b' v/ M
2 |2 L6 i' H) q" l" Q0 `
6 i2 d5 V. @* m9 w" G; i" ?1 ]
让我们看看010和011的ascii码是多少
2 |- y5 I1 ^: e6 E: C
. u! E! L8 _: f# i7 k
  z: b8 U/ p: ?, f
1 K! q1 P9 N+ a; w! r分别查询select b’011′ select b’010′7 x$ `5 z- R' g: P, ~

9 G$ m9 i) ^5 z9 T ! y( f, x9 H8 N# ^: i# S
; H, d, b7 T, r: R" n5 g
获得结果 010 = 2 011 = 3  w) @! y  A1 }5 E
  U5 \: z) K8 l

+ K8 S! }3 a4 d! H% m* y1 y! U$ z) }; T: R  s- j
执行如下sql:
( `+ c4 A, Z; Y4 b4 s, _7 w0 i
/ S! Q  n6 K$ I7 ~; X3 |: R# l 4 ?: d) ^0 X( r& Q

& G5 U' d  i( Z6 @0 ymysql> select (ascii((substr(user(),1,1))) >> 5)=2;
% X# y1 L: X2 S# ?7 d
6 r! v) S7 d  @7 P& z! D+————————————–+4 x7 {- b7 i- ?

2 D6 i2 F, p" D/ A0 J7 k| (ascii((substr(user(),1,1))) >> 5)=2 |
, Q& K1 @% g  O  T. g6 n- _+ l( i
* F5 U7 K" p) x; c4 p- |  U+————————————–+
# u2 P# `; W( t3 w8 q6 U( `" z0 V! Y, \/ H
| 0 |
# r3 k; d6 S, o+ z# x, S4 I0 ~# N# V1 P1 `) P/ z, B; i
+————————————–+
2 i( m" [; f& a; \6 [
# v! h1 g7 k1 }! m即前三位不为010,而是011. o0 F. V8 [$ _9 K7 ?. \! \
# n- }" b2 D2 H
/ Q8 L* t8 W$ h
: i6 W2 I7 f% p8 B
直到获得最后一位
+ R1 d; [4 ]2 t" R9 L1 }7 J' q5 l! o  Y8 S1 Q! {

+ U6 v; L7 D, F" r' V( V* d. F( y1 |  w. H. x, O
最终结果为:01110010; v6 `/ |. [# ^$ V4 {" J
; Y. \+ x+ v) b' Y
) j0 ?2 X! u: Q" r6 |) i) l$ q" Z

6 T  h' S3 m5 x' s9 L; ]转换一下:- o7 P7 `% L% V! N2 N1 Z- U5 {/ v
* o% Z8 N- _+ h- i

& k; M6 j) j4 f! B+ m; D, L* j. k  ?( @0 |" u& c: D5 p
select b’01110010′
. \& V3 C) s) @% X
7 e# E! Q3 ^: m: f- C% L% U8 f 7 L( v; E$ C5 a" O$ ~2 i+ \# k
/ @7 o7 q# R2 h' P5 c/ k! Z/ z
查询结果
" y( H  \4 l/ M8 U1 A3 G" `
" k4 W! }6 B8 A+ L* R+ g
0 i$ Q, m2 A, N4 e* n6 b% l4 ]2 w7 ~! i) S
+————-++ j- ]* B/ |2 _
4 o% D% f  Q' W3 K
| b’01110010′ |
" p  r. P* d. p- Y1 g8 E+ d( j! Q( h4 X
+————-+4 P9 d: L6 u, _1 k/ h4 C
4 ]7 J7 P3 `7 u! c
| r |( y6 N8 y! n& H4 c0 G

9 _; K7 l$ K( V  f! c+————-+
& ~8 V, i1 z0 ?- c. U: Y3 Z, z- y8 t# {& ^, j
1 row in set (0.00 sec)
/ p- b4 P* K3 d) Q. K8 t! }- D1 A9 C, x4 U2 p4 U+ h/ k
3 x( L! J( N, ?4 I
) n: b9 W4 J. Y( q" `4 w5 Z
这样我们就获得了user()的第一位.其它位依此类推
1 G; E& Z7 `2 ?7 l. ?& ?" {4 E; E) f* d+ K! ]  w
回复

使用道具 举报

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

本版积分规则

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