中国网络渗透测试联盟

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

作者: admin    时间: 2013-9-25 13:52
标题: MySQL盲注最全 实例讲解 详解
本文实例来自习科论坛交流三群。这个注入点可以使用错误回显注入来爆数据,本文出于讲解的目的,使用更麻烦的盲注。
8 a$ i! D7 B- e: G3 l) ~/ S% s阅读本文,需要有一点点SQL基础。盲注理解起来其实非常简单,就是做起来非常费劲. m# F4 {' d( \3 K. t" N
作者:YoCo Smart
+ }4 n) D, z0 p2 H: t1 p来自:习科信息技术 - http://BlackBap.Org* C6 X4 q  G) ^, C3 x/ B5 T, ]
我们先来看注入点,是一个B2B网站建站公司: 7 }3 M) k9 d2 s# @  Z; p7 R. \
复制代码: o# v) G/ h6 v% i# p/ D# z/ [" I
错误提示已经很明了了。我们看一下注入页面的代码(有删改): " t% y$ V2 V/ x# e( e/ F: V: p- {
复制代码
) l4 p) ~7 q( r/ M; ^* {以GET方式取值的变量js_user虽然没有过滤被直接带入了数据库执行,并且MySQL也执行了,但是并没有显示数据库的任何信息,而是判断是否符合# l3 B/ f: u4 T( b+ B
那么我们先从union的盲注来看吧。' H+ J0 q" {3 f+ ]2 Z! e2 q, f
先看版本: / i* t, M$ `  l) q3 O% Q8 ]: J
复制代码
$ [" D4 v5 U9 c0 d. S  i- {7 ]6 k这个时候我们来看看原来的代码中的SQL语句是怎么执行的: 4 s2 V6 e1 V$ m" A+ ]$ `5 h" |. D
复制代码
! \; S: S" B' X3 S因为执行成功,所以不符合if(!$num)这个条件,回显“用户名已被注册”,那么版本为5成立( e7 E3 w+ R* [/ P
再来看database()的数据:
7 n4 d) r& V7 s1 F$ T$ G: @复制代码
) w) o0 G0 u0 y: tlength()函数是计算括号中数据的长度,回显为纯数字,可以用大于小于和等于号来判断是否正确。2 `! H: N6 {% R. l
这里要注意看一下left()函数中的数字变化,关于left()函数,可以自行参考MySQL手册。
! ~9 t7 Q! x3 i+ Z5 I' W2 i再来看一点简单的判断句: ( k: L9 P2 R% A3 L9 R) B. f. A. ?
复制代码  v6 o& Y& ]9 c5 h6 E" \% s1 U
这个时候length()函数中的pass是猜测的,当然是建立在猜测正确的基础上。
9 N2 f1 e2 C2 l# A8 l5 k) c! E这里要说的是,pass和前面select后的userid同属一个表段demo_b2b_admin,所以不需要再带select语句
5 ^  z' P3 f/ Z那么这里就能得到:
3 g' h7 a. B# Q9 e- v# L0 d复制代码: S5 B7 h; L# C
这样,猜数据的方法你肯定是懂了
. V  z8 a6 ~/ k2 h. M9 R# N% s; U8 p: H( n

8 W+ i5 g2 o6 p# C+ c1 Q6 k最后,我们来看demo_b2b_admin以外的数据,现在再来猜表段:
$ X# w: V& w; V8 h" v; ~) _, l复制代码
/ J- F  u8 S5 V0 R实际运行的SQL语句就是:
( S+ k' }" m$ f; e复制代码: d/ Y  S7 w3 G* ~- W* `" R9 y' Y
上面这个语句,对于information_schema不明白的,可以参考其他MySQL注入文章来看一下这个库的意义。
% U0 U6 c8 a9 y: u' T3 l- L  L关于limit x,y 的用法,可以参考MySQL手册
: _! c1 W3 {9 e
% c' {3 c/ e3 U& E+ B2 Z: j最后剩下的要说的就是ascii函数和hex函数了
# t" D, e7 p/ |这两个函数的意义是避开php的GPC转义,例如:
2 g! _$ @0 V* ~2 u) n复制代码& U  `7 s: G  k0 Q
substr()的用法可以参考MySQL手册,如果不懂,就这样套好了。Char()里面的数字替换为ascii码数字




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