中国网络渗透测试联盟

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

作者: admin    时间: 2013-9-25 13:52
标题: MySQL盲注最全 实例讲解 详解
本文实例来自习科论坛交流三群。这个注入点可以使用错误回显注入来爆数据,本文出于讲解的目的,使用更麻烦的盲注。) x  `% o3 `$ m4 u
阅读本文,需要有一点点SQL基础。盲注理解起来其实非常简单,就是做起来非常费劲
) ~& Z% V$ [. b( C' r作者:YoCo Smart
6 q3 j8 q/ e! Z0 d9 R% I0 J: O! v* t来自:习科信息技术 - http://BlackBap.Org- n8 o1 O) x" R1 U; T  H2 I
我们先来看注入点,是一个B2B网站建站公司:   B9 w2 E& \/ w! w: ]4 c
复制代码
( f9 r. q3 T: I9 I0 ^& ]6 i% O错误提示已经很明了了。我们看一下注入页面的代码(有删改):
6 f% B/ r1 H# N' U: R复制代码
2 ^* f! W, B* F4 U, R+ d以GET方式取值的变量js_user虽然没有过滤被直接带入了数据库执行,并且MySQL也执行了,但是并没有显示数据库的任何信息,而是判断是否符合
/ [4 [) R2 d% `3 D8 P那么我们先从union的盲注来看吧。
. W# W+ h5 A# n先看版本: 8 n+ l) h/ o# o7 c
复制代码
$ K3 f$ ?& x9 j1 c* i7 ?, ^这个时候我们来看看原来的代码中的SQL语句是怎么执行的: & H- r6 i0 @% o0 l
复制代码' Z( _; p9 z( m7 n6 J" V  q
因为执行成功,所以不符合if(!$num)这个条件,回显“用户名已被注册”,那么版本为5成立, o# y* Z& F% V
再来看database()的数据: ! }" Z& P1 N) t
复制代码* s* \3 C. ^; O
length()函数是计算括号中数据的长度,回显为纯数字,可以用大于小于和等于号来判断是否正确。
6 P; q* \+ Q3 L+ [这里要注意看一下left()函数中的数字变化,关于left()函数,可以自行参考MySQL手册。
! K4 g; Q. z6 O4 U! m再来看一点简单的判断句:
& a& P' H) B* U! C& W& z复制代码
) ?! Y) e6 b' l这个时候length()函数中的pass是猜测的,当然是建立在猜测正确的基础上。
+ t$ \3 e8 x% t$ f6 d这里要说的是,pass和前面select后的userid同属一个表段demo_b2b_admin,所以不需要再带select语句
8 T0 V$ _8 O; K2 s5 f' g. H6 I2 d那么这里就能得到:
: R4 ?# f2 @4 p. t; [! n" W复制代码
* o& O# z% l: X这样,猜数据的方法你肯定是懂了
& Q% E& |* M; @" E
( K. l8 O+ p$ w7 t
/ }  K& B& E2 s最后,我们来看demo_b2b_admin以外的数据,现在再来猜表段: , p' E" U$ G% Q$ Y$ Q8 L
复制代码- c1 b: ^& [/ P9 M1 g
实际运行的SQL语句就是: 6 ~9 E8 h& f5 C0 P! k, n, @5 l3 n
复制代码
5 Y  b9 Z$ d$ `8 R3 |2 C( i上面这个语句,对于information_schema不明白的,可以参考其他MySQL注入文章来看一下这个库的意义。
- g7 ]0 t% i% t. i) k# T关于limit x,y 的用法,可以参考MySQL手册
* r/ j4 G2 A5 Z9 i& n  V$ B2 m1 K; @" ]9 w
最后剩下的要说的就是ascii函数和hex函数了+ f0 m5 B' ?0 @+ ^9 Q: X4 `
这两个函数的意义是避开php的GPC转义,例如:
1 }& {. J  m9 x3 ]( c+ o复制代码. D0 S& Z" E. X% D5 i( |- `
substr()的用法可以参考MySQL手册,如果不懂,就这样套好了。Char()里面的数字替换为ascii码数字




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