中国网络渗透测试联盟

标题: MySQL盲注最全 实例讲解 详解 [打印本页]

作者: admin    时间: 2013-9-25 13:52
标题: MySQL盲注最全 实例讲解 详解
本文实例来自习科论坛交流三群。这个注入点可以使用错误回显注入来爆数据,本文出于讲解的目的,使用更麻烦的盲注。
; [! r! j+ v0 G" v7 n7 G* j1 S+ ]阅读本文,需要有一点点SQL基础。盲注理解起来其实非常简单,就是做起来非常费劲
3 w0 C1 j' N: E0 b' N作者:YoCo Smart
) x4 R5 B) q0 G来自:习科信息技术 - http://BlackBap.Org
, g" Y- k& t* |/ R2 y1 g我们先来看注入点,是一个B2B网站建站公司: 0 N1 U6 v7 h% J6 Q' b5 D- s1 k
复制代码$ q" p! B, I$ A7 Z+ d
错误提示已经很明了了。我们看一下注入页面的代码(有删改):
9 |% b4 Y) h6 H3 n7 R2 a' H0 }复制代码
; I' ^9 g4 P( F4 q+ R以GET方式取值的变量js_user虽然没有过滤被直接带入了数据库执行,并且MySQL也执行了,但是并没有显示数据库的任何信息,而是判断是否符合) J7 q3 g) n  S, n/ ]
那么我们先从union的盲注来看吧。2 A# K4 a3 \$ D) G% k9 v$ X
先看版本: 3 n! T1 J/ w( W0 A0 \1 k
复制代码
7 B6 y. Y9 H- h/ n1 g$ B+ o这个时候我们来看看原来的代码中的SQL语句是怎么执行的: 6 G4 V2 P* \8 T& M% t
复制代码2 B/ N# F6 b; D  R  x
因为执行成功,所以不符合if(!$num)这个条件,回显“用户名已被注册”,那么版本为5成立) P  ?7 M1 t6 s6 ]+ Q
再来看database()的数据:
( x2 {/ E. L: Q) g0 S- ?复制代码
6 S# c* S$ O9 `length()函数是计算括号中数据的长度,回显为纯数字,可以用大于小于和等于号来判断是否正确。$ ?1 N1 u; q3 Z) G& w5 j7 t
这里要注意看一下left()函数中的数字变化,关于left()函数,可以自行参考MySQL手册。
2 f6 l  e) r/ @/ H再来看一点简单的判断句: , x6 K; I+ Q5 C4 O, e
复制代码2 M- p6 j! ~9 Q- A
这个时候length()函数中的pass是猜测的,当然是建立在猜测正确的基础上。4 ~2 l1 j9 [( n9 m" \. b
这里要说的是,pass和前面select后的userid同属一个表段demo_b2b_admin,所以不需要再带select语句
3 ~; `% k7 L5 M1 M& ^4 p1 Q那么这里就能得到:
" w+ z. p3 B" ]4 p! W, w% r复制代码4 @* J0 |6 O2 y7 I! ?8 w
这样,猜数据的方法你肯定是懂了2 J# X3 ], Y$ R) p, m1 U
% L/ E9 c1 K) d  S, y
+ N2 i: j' Y8 V! _0 n. b  V
最后,我们来看demo_b2b_admin以外的数据,现在再来猜表段:
# [& V3 B% n: C! U" W9 J& L" o9 u复制代码
" b" S! ?, Z5 p9 _; r# Y实际运行的SQL语句就是: 5 V/ @8 t7 l- @7 a* L' q
复制代码
% m/ f1 A9 f. }8 C: f) _* U上面这个语句,对于information_schema不明白的,可以参考其他MySQL注入文章来看一下这个库的意义。4 T9 e9 b1 z' H9 U
关于limit x,y 的用法,可以参考MySQL手册
  G! _# B4 H. L1 T
* p* T9 G1 Y4 h9 Z- F  F" z最后剩下的要说的就是ascii函数和hex函数了
% ?3 x, m2 M$ ]2 F# u" _; }这两个函数的意义是避开php的GPC转义,例如:
) x0 K1 l9 ]' a8 x4 ?& N复制代码
$ i6 @* E  I2 L" ]2 o/ H/ l0 Jsubstr()的用法可以参考MySQL手册,如果不懂,就这样套好了。Char()里面的数字替换为ascii码数字




欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/) Powered by Discuz! X3.2