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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位$ }' ^5 X, Q3 O! T# K! v: v

' g9 Q/ h; U* O5 h, D& Y9 s , F  y6 r5 g" T
7 [& M4 x+ ~% h/ i. S# h
下面将以查询mysql数据库当中user()的第一位为例:
4 G+ J" K+ ]$ j/ x
0 b( C, w/ R) E
) i1 R8 h5 Q7 @+ s0 L2 R4 g, b; u4 M/ p+ O1 w9 T
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)
& I9 i5 t( o! ?" j7 E) W  L
7 L; ]& p+ d1 w# Q, D) m
) X" w3 f- ~0 U! i; o1 m
$ F. X" o: ~2 @+ B) A: \首先执行如下sql语句:
4 y- k1 A, A( W- @+ _- ^: J4 p0 _8 A- v# F  F, O

' \. j4 A. R6 ~1 U3 H1 v4 n1 g; e- H) s/ Q
mysql> select (ascii((substr(user(),1,1))) >> 7)=0;
' P* J9 u$ A; }8 }* `% r9 t
# S5 h6 c' k5 I: i; _9 }   Y) c" ?9 T# Q% p9 m/ t$ x
9 m& ^( ?) a9 [7 p" S
我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的1 J" k9 V7 `$ P) b

' D' ^! k! h8 y) F1 \
8 |. h& ^  a- G+ T( m8 B3 e% N/ g! r6 }2 E- Z
第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1
; F( R8 Q+ q1 K
7 T/ ]8 Y& N* z8 C2 G' L; x- k+ J
* Y5 \7 Y9 r) q7 l4 I1 V4 L1 v3 w' _/ n7 c/ P" I
如果运算结果为1,说明第一位为0,不为1
4 }4 C9 g6 s+ L- V2 n3 U( }
) c" i1 |5 a3 L7 o5 s ( f4 P+ G$ o& I0 j4 z& N, Z: Q; T% w

- B+ ]% D* z% X. E+————————————–+5 s8 p6 u1 s  P" s' X; Y! p% h
; I; [: d+ c, I& J, ?) {8 a( m8 }
| (ascii((substr(user(),1,1))) >> 7)=0 |
9 }% N2 y. a; _' ~  \8 q$ p  O
4 {$ U+ P3 b+ T9 \& T+————————————–+
7 B6 W: t! n, k+ e: v2 g7 j% G$ B# P
| 1 |
* t0 [% b2 g. s
) Y0 W9 |. o" x; I" ?6 J+————————————–+
8 D, _  T' m5 Q1 K2 B3 b, r5 o7 g9 i* D: P0 O" X- z: u" c
1 row in set (0.00 sec)
$ H1 B6 E. a# {9 _8 ~, H2 f
. o1 h5 l2 F, j+ @3 x这样我们就确定这个8bit的ascii的第一位为0' b+ U- T. n) E1 Q
/ K6 q9 g) v& {6 {
3 n" x& \/ T( m# {7 f$ b" L

8 r. `0 k: h$ B0 A6 q第二次我们来做6次右偏移来确定前两位1 e9 {. E+ V! z  [* H) u: a

( I8 y' \1 O5 ?5 a' Y % T2 q  [# S8 S1 A
8 T" D. j: p! R5 l9 k4 a
前两位可能是01或00,即依然可以与0做比较,: z( j8 {9 T/ ^: T! v. D3 F

. {% S+ O- R+ C/ Lmysql> select (ascii((substr(user(),1,1))) >> 6)=0;
) }! P9 `4 r2 u8 B, G3 j
6 l) T0 H+ d& P& B: j7 n' I+————————————–+
; V2 G. w+ W# O" r( k3 x
  s7 y# \2 w8 s4 ?& L/ p# g6 q; b| (ascii((substr(user(),1,1))) >> 6)=0 |
9 O/ V: l' d$ a1 S  A# N0 T7 x- l8 j0 M
+————————————–+
' S5 H+ m" ]9 P% K' z1 `* p% V4 h
7 d1 k" }2 L$ U. z0 C& d' ]| 0 |6 {7 `+ |" ]: E' k. Y% ^

  L+ [. d( F5 u; h* L4 v  ~+————————————–+" j3 _, i, e% B% K5 u
+ d: d9 e  U* x
1 row in set (0.00 sec)
4 S6 u2 o5 \- _$ _! l( D! Q$ I" d  [: T' E8 ?

; N/ i) y6 e' d# |, M* t+ A9 S# _' R; G) {" O( Z3 j. [- y
结果为0,即第二位为1- `) N4 y3 y7 l' J
; X  h. p  z- w. w

; A4 c" d- m, b% U% }- T. F$ T+ h9 f& O$ L
开始猜测前三位为010或0114 k  g+ U- U/ x& b. [1 @% l0 O, |

* P9 Z" ~+ b1 q2 O$ U, f. }! T" i' ?
- O1 a+ T, `3 P/ F) f$ A  u* H/ }4 M& a5 N( i
让我们看看010和011的ascii码是多少! H7 H9 Y0 q# o6 W

! P0 |3 i; D" v3 }: {1 C ; W- X, J6 ^+ o) o3 M2 B2 v

# t  l7 e; y- ~6 g9 @) h! A7 _' d分别查询select b’011′ select b’010′: {  l6 W7 `: p7 Y9 @, O
) j: J& V  k: v& s: R  @  B; V

( r  V! V2 R) L2 ]) X: J6 j
; I9 P$ t+ b. l4 `; D获得结果 010 = 2 011 = 35 ~5 X% k, i) }2 }1 X
. b1 {; y8 R& y$ Z2 _  v) A( ^

6 S2 M9 R" r6 T5 L, C/ B% N/ f! Q
执行如下sql:
( `7 I: y) l$ G! E5 T' Z% \, ?" d* C- u7 X. L

9 N8 a/ ~8 x% v# C% ?
. p) T5 w3 S* bmysql> select (ascii((substr(user(),1,1))) >> 5)=2;
. i. a% c: @5 y" \; e% I" l+ O
4 u" J' W8 o# w; N" W3 z, }3 M+————————————–+
; o4 V* Y1 v3 H. X' v: D& d- B4 m1 M$ _# l0 `3 n4 O
| (ascii((substr(user(),1,1))) >> 5)=2 |9 C# c, A7 G: O9 s( A
% J1 \9 ~$ a+ P- q. `& V
+————————————–+9 e: j/ M! Q7 E0 H$ S8 @! F; U

' @5 S# ?- C% |( P  G| 0 |
8 W6 f- m* w' j: N  ]
& I$ S: [1 T; {9 _9 J- F' y+————————————–+8 {! S" w+ V+ F, \! _/ c

! j- l. q% w* Q  M  q  {即前三位不为010,而是011
( t& J6 J! Z7 y8 t; @* E3 U  r7 a  t# r+ @" `+ ~% U

) |  u, \+ ]3 J5 i& S; p
& m. r- D4 k' G& g( v直到获得最后一位3 g" y# D, ]& V" R4 O& {

0 i8 z1 j+ d- q/ p+ l6 m
* {& f( I" \, C9 s
( j% ~. T: ~7 c* D( T/ ?最终结果为:01110010
5 E$ q( c  Q$ w  i
2 S8 O3 D- a0 s% f( }7 | 2 g# M4 O8 a% d2 {  U& O! l( h
9 m' `  C$ A2 \# j1 d3 ?8 z2 Y
转换一下:$ k4 P3 J% {) K1 w8 q- \7 u

' C  [1 f$ s! g8 D/ p: X
+ \* N  t( [, r+ a  D3 G( t$ u' H1 c2 T+ `
select b’01110010′
' Q9 k% v# D" [; l) F1 Y  j, b* P8 h0 ]7 Y
+ W, L( f; b3 h! k1 ]$ ~0 m$ }9 B

6 ]6 X& f4 _6 i$ @7 P查询结果
( N5 G, O/ x+ j% Q" }# m3 p3 w& @- j: m1 ~2 x- o

. R5 W) W- Y$ @" z1 f, W' W$ r$ }) h- d* B. T
+————-+
8 @' D- ]; e0 M. N2 I
, j; {* ?2 j: _; `3 e7 l| b’01110010′ |# p6 j2 [% r, |# g7 X" C9 Z% f1 v
7 Y: {, r+ Z- T7 [" L0 X5 `
+————-+. ?5 O9 a: {7 H# |7 G  e' S2 w7 d, s
# |. t0 ~' \( v5 {4 M" [
| r |. a1 M& f  s, U# u3 K3 D# A# F3 M

7 Z, y' ]2 h2 r8 g3 U( ~+————-+# o: e7 [$ u) w! T

8 a0 e4 O4 O, t- N4 ?) K  y* m4 `% e1 row in set (0.00 sec)# T- O" @) q* N+ ~! V

8 l/ b: {: y$ P7 Q0 T' m
$ b9 b0 G- K0 L& l  e1 C' Q
' Q, ]- Y0 h6 a( E: ]4 G这样我们就获得了user()的第一位.其它位依此类推
' y4 \! U3 ]" l0 Z) Y* c
' N& F2 r+ a! X' h" W" P( V7 s
回复

使用道具 举报

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

本版积分规则

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