中国网络渗透测试联盟

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

作者: admin    时间: 2013-9-25 13:52
标题: MySQL盲注最全 实例讲解 详解
本文实例来自习科论坛交流三群。这个注入点可以使用错误回显注入来爆数据,本文出于讲解的目的,使用更麻烦的盲注。" F& G$ l$ t0 r
阅读本文,需要有一点点SQL基础。盲注理解起来其实非常简单,就是做起来非常费劲
& @, Z0 Y6 Z+ R! q5 C作者:YoCo Smart
, B4 S. a5 J( p: F来自:习科信息技术 - http://BlackBap.Org3 x6 W2 j+ I4 e5 J1 X0 ^
我们先来看注入点,是一个B2B网站建站公司:
- ]7 J( e! `' c/ y& |复制代码; B- j) \* e. j3 W7 E
错误提示已经很明了了。我们看一下注入页面的代码(有删改): ; v/ E! K( q" Y
复制代码
9 d$ O6 V  d# ?+ P" Z9 _- R以GET方式取值的变量js_user虽然没有过滤被直接带入了数据库执行,并且MySQL也执行了,但是并没有显示数据库的任何信息,而是判断是否符合' w2 ~/ m9 s/ |' L5 q
那么我们先从union的盲注来看吧。
4 U( H* B0 k8 H' {2 c先看版本:
6 G" ]0 b5 ^2 R4 U- b- c. L复制代码
* N! @( K; @. K1 r这个时候我们来看看原来的代码中的SQL语句是怎么执行的: 7 u- t9 x% q+ N8 ^
复制代码/ S$ u! N. f# Q% `: h  F
因为执行成功,所以不符合if(!$num)这个条件,回显“用户名已被注册”,那么版本为5成立
& h4 Y6 B  K; V" Y2 U2 Q( k再来看database()的数据:
! J' y0 P' q; S复制代码
! o% m8 G# H% D8 ~4 D2 @. ^0 t% slength()函数是计算括号中数据的长度,回显为纯数字,可以用大于小于和等于号来判断是否正确。8 g9 k0 p+ d. y' @
这里要注意看一下left()函数中的数字变化,关于left()函数,可以自行参考MySQL手册。
  g. F9 h- _0 o# i  u再来看一点简单的判断句: 3 Q$ s5 Y4 ~  q4 l; b( T/ F
复制代码
2 \3 H8 u  D7 q) V4 I这个时候length()函数中的pass是猜测的,当然是建立在猜测正确的基础上。
, B& j9 F+ h/ L, Q* x这里要说的是,pass和前面select后的userid同属一个表段demo_b2b_admin,所以不需要再带select语句
! e4 V7 L5 q4 Y5 Q& a那么这里就能得到: * y% P+ G; M" b
复制代码5 A* ^; c$ d. O9 g, S' x2 j" r
这样,猜数据的方法你肯定是懂了
$ B3 e0 X5 o8 g% B
6 |) Y1 U" m! z, J) Q2 d5 W- L7 V' g' z( F8 e
最后,我们来看demo_b2b_admin以外的数据,现在再来猜表段:
$ M( U, ?7 a" {0 c3 R3 b; H+ w复制代码  b8 _3 `* B. H, S+ O  H1 X0 h
实际运行的SQL语句就是: 2 Y8 D: U9 o- o- |: n
复制代码$ D! |; w) ]! D! ]/ [3 @
上面这个语句,对于information_schema不明白的,可以参考其他MySQL注入文章来看一下这个库的意义。
4 l" W0 V4 Y+ _0 W1 v5 v+ l$ r% }. Y关于limit x,y 的用法,可以参考MySQL手册  V- y! F: j( w8 A9 B
5 o% c: K, Y% j. c% T* Q$ P
最后剩下的要说的就是ascii函数和hex函数了
- S, z- f" d% ~: {- ]- {这两个函数的意义是避开php的GPC转义,例如: ( s) G) O' \% B. N; d/ E
复制代码3 s' l! k* F. ?
substr()的用法可以参考MySQL手册,如果不懂,就这样套好了。Char()里面的数字替换为ascii码数字




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