中国网络渗透测试联盟

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

作者: admin    时间: 2013-9-25 13:52
标题: MySQL盲注最全 实例讲解 详解
本文实例来自习科论坛交流三群。这个注入点可以使用错误回显注入来爆数据,本文出于讲解的目的,使用更麻烦的盲注。8 h! s& L9 U4 P  u1 F$ K
阅读本文,需要有一点点SQL基础。盲注理解起来其实非常简单,就是做起来非常费劲
, r( g/ ^, F( w2 I作者:YoCo Smart  M* @. s+ r6 F  ?+ O
来自:习科信息技术 - http://BlackBap.Org! n; W0 b, k9 D9 K; B' L6 z
我们先来看注入点,是一个B2B网站建站公司:
8 o! M7 q% y& p$ i& C) o复制代码
6 g) D- Y6 w$ @9 f错误提示已经很明了了。我们看一下注入页面的代码(有删改): ( v6 Q. P! }4 U3 G# u6 j+ K
复制代码4 l3 w- L7 A# e. F% d0 t# I8 i/ R
以GET方式取值的变量js_user虽然没有过滤被直接带入了数据库执行,并且MySQL也执行了,但是并没有显示数据库的任何信息,而是判断是否符合) H6 A9 E2 h' S, {% h* b
那么我们先从union的盲注来看吧。2 f3 `. F; s; j( k1 X; J
先看版本:
4 i! x+ C2 k- p+ j复制代码" d) `' l3 h1 K! K3 R* |& H7 M
这个时候我们来看看原来的代码中的SQL语句是怎么执行的:
8 o9 o# [! T: M- n/ s1 i& @复制代码3 R& s2 _1 H8 i$ |$ d% K$ Q+ t
因为执行成功,所以不符合if(!$num)这个条件,回显“用户名已被注册”,那么版本为5成立* N# w" L8 W3 k( k# \
再来看database()的数据:
9 t  [# h6 @8 s+ b. S复制代码) a3 g9 c( V: _, N& X# h
length()函数是计算括号中数据的长度,回显为纯数字,可以用大于小于和等于号来判断是否正确。0 e4 P- L8 K; W' s
这里要注意看一下left()函数中的数字变化,关于left()函数,可以自行参考MySQL手册。
$ [- G) |; k! C再来看一点简单的判断句:
  f2 H9 c# _( b# U# G9 l' h复制代码; B+ e3 u# f2 i# `5 @
这个时候length()函数中的pass是猜测的,当然是建立在猜测正确的基础上。9 E7 h) Q/ g; f" B$ q0 q
这里要说的是,pass和前面select后的userid同属一个表段demo_b2b_admin,所以不需要再带select语句$ X+ I4 c. B, U% u' A
那么这里就能得到: ! K' @2 O/ E* Q# f$ U
复制代码; q+ w- `, ^/ U% `+ C" {
这样,猜数据的方法你肯定是懂了2 P8 c+ g# X8 [/ C6 A6 {

' b' {; l& N  n
7 k3 G5 E2 m; S  z' C& B1 q最后,我们来看demo_b2b_admin以外的数据,现在再来猜表段:
  H, t- g) [3 g; B; z: ^5 J复制代码
  Z  Q% s: u/ u& @0 G0 d- t实际运行的SQL语句就是: , w3 S4 f! \1 p6 J- h6 K7 M1 b
复制代码
. G+ W- D# Q0 `( B% F/ h2 M6 Z9 x  }上面这个语句,对于information_schema不明白的,可以参考其他MySQL注入文章来看一下这个库的意义。/ \6 q4 B# Z6 ~" H: L" r. K- \
关于limit x,y 的用法,可以参考MySQL手册& _; Q3 a) G! ^2 T

& O2 z! i. n9 \$ z& h8 @最后剩下的要说的就是ascii函数和hex函数了
* y. \0 u& k# X/ L) B# ?这两个函数的意义是避开php的GPC转义,例如: + h8 i3 ~5 e: m# k& S
复制代码
" S  M# S. {0 q6 Msubstr()的用法可以参考MySQL手册,如果不懂,就这样套好了。Char()里面的数字替换为ascii码数字




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