中国网络渗透测试联盟

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

作者: admin    时间: 2013-9-25 13:52
标题: MySQL盲注最全 实例讲解 详解
本文实例来自习科论坛交流三群。这个注入点可以使用错误回显注入来爆数据,本文出于讲解的目的,使用更麻烦的盲注。
+ j) _" O% f5 Q, V9 Q阅读本文,需要有一点点SQL基础。盲注理解起来其实非常简单,就是做起来非常费劲
' Q+ s# B- q1 w" ]作者:YoCo Smart% a9 I/ U  l: Y1 W! G. R; l
来自:习科信息技术 - http://BlackBap.Org
3 i7 |( H3 r0 L6 F" k" @我们先来看注入点,是一个B2B网站建站公司:
2 K% S, \/ h2 F; z. T- P9 D复制代码
& z4 p. P; V5 p8 y6 E. S: L错误提示已经很明了了。我们看一下注入页面的代码(有删改): : T0 ~( [2 l3 e  ?- S  J. }
复制代码: Y( z* Q4 D) q, k
以GET方式取值的变量js_user虽然没有过滤被直接带入了数据库执行,并且MySQL也执行了,但是并没有显示数据库的任何信息,而是判断是否符合
; n6 A! U5 M/ ?7 n9 y  z& j% L那么我们先从union的盲注来看吧。: s# t" T' s6 L
先看版本:
0 f' u5 S* Z* m' y$ i复制代码! j8 i- C5 _2 `& L( H- h2 d
这个时候我们来看看原来的代码中的SQL语句是怎么执行的: 6 b! d% n2 _: r
复制代码
6 ]" ~9 I, \( g因为执行成功,所以不符合if(!$num)这个条件,回显“用户名已被注册”,那么版本为5成立& s- g9 Z8 e- \: o
再来看database()的数据: . L% [; j) |4 ~7 A
复制代码  d/ N9 w$ K; [- I
length()函数是计算括号中数据的长度,回显为纯数字,可以用大于小于和等于号来判断是否正确。* E7 C. p3 v+ B9 d% d
这里要注意看一下left()函数中的数字变化,关于left()函数,可以自行参考MySQL手册。+ f" B- @- t' G$ G7 y
再来看一点简单的判断句: 6 Y/ ]: n6 q1 g7 I
复制代码
0 z6 i8 f0 ]$ n: Y这个时候length()函数中的pass是猜测的,当然是建立在猜测正确的基础上。. U& p& H# D' x5 I/ ]7 q
这里要说的是,pass和前面select后的userid同属一个表段demo_b2b_admin,所以不需要再带select语句
3 S/ j. H4 ~( H" d. C9 I. A那么这里就能得到:
! j& }) q- m+ E& s" d' V. }复制代码+ G$ A9 F: R' M7 U, b: V' y& m4 `1 ?
这样,猜数据的方法你肯定是懂了: D" Y/ H0 s  k  H7 K  F0 ~' M
. e2 ]. p) }  v1 m+ O

0 b- m) |- k* G8 F, i% m* O5 p最后,我们来看demo_b2b_admin以外的数据,现在再来猜表段: : D3 m- f. h/ ^+ v# D) E1 v
复制代码
! P$ i& x( S& o: I% N. I实际运行的SQL语句就是:
" ]/ Y( }- j2 ^, u) Y$ M复制代码
7 C8 T0 i$ p6 D1 M* r( B, c9 o上面这个语句,对于information_schema不明白的,可以参考其他MySQL注入文章来看一下这个库的意义。
1 j# Q/ ^5 {9 U+ |; x) x; X关于limit x,y 的用法,可以参考MySQL手册7 f/ I$ a* K, m) Y: u3 U/ V

1 s0 w4 t- a$ Y9 Z4 K7 b3 `+ p最后剩下的要说的就是ascii函数和hex函数了
7 O1 O! Y+ T  P- m2 R$ i! N这两个函数的意义是避开php的GPC转义,例如: ! {4 I0 y: [3 x0 b& W3 P
复制代码
0 W: G+ g: D' W: [7 l( _( [substr()的用法可以参考MySQL手册,如果不懂,就这样套好了。Char()里面的数字替换为ascii码数字




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