中国网络渗透测试联盟

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

作者: admin    时间: 2013-9-25 13:52
标题: MySQL盲注最全 实例讲解 详解
本文实例来自习科论坛交流三群。这个注入点可以使用错误回显注入来爆数据,本文出于讲解的目的,使用更麻烦的盲注。7 l3 \0 J# c5 V/ y2 R3 U% u
阅读本文,需要有一点点SQL基础。盲注理解起来其实非常简单,就是做起来非常费劲4 ?5 ]: S; Y9 y- p& x, o$ ]
作者:YoCo Smart
- U; I  P5 Y  X6 j6 S9 ~来自:习科信息技术 - http://BlackBap.Org, O: ?" u( b0 `' R/ b: D" K# a
我们先来看注入点,是一个B2B网站建站公司: 5 j4 ~- E% ]: @$ P- e! K
复制代码6 `: f; o9 }4 `! K' D
错误提示已经很明了了。我们看一下注入页面的代码(有删改): # q/ [# u* S3 l/ s+ S4 Q
复制代码6 R, O+ O3 N* |; j- N3 }/ U
以GET方式取值的变量js_user虽然没有过滤被直接带入了数据库执行,并且MySQL也执行了,但是并没有显示数据库的任何信息,而是判断是否符合
5 G0 L0 |- P7 G" ^: U1 `  m那么我们先从union的盲注来看吧。5 r9 H9 Z/ X: m0 R$ S, X
先看版本:
9 `! u5 T3 _/ ?, O复制代码
1 c  R% F6 Z  {) O这个时候我们来看看原来的代码中的SQL语句是怎么执行的:
4 p1 j0 U6 k4 Y; T复制代码; @# S7 _% u: w2 V6 O
因为执行成功,所以不符合if(!$num)这个条件,回显“用户名已被注册”,那么版本为5成立# y9 @6 i, c7 P7 q) m6 V
再来看database()的数据:
5 c4 h) M9 x4 R, A) h1 C, _  a复制代码6 t& x6 Q2 L. r
length()函数是计算括号中数据的长度,回显为纯数字,可以用大于小于和等于号来判断是否正确。5 v4 y8 J1 ]. n% c) e
这里要注意看一下left()函数中的数字变化,关于left()函数,可以自行参考MySQL手册。1 E& D! D% Z% `' R. ~1 S" u2 x
再来看一点简单的判断句:
9 w  H6 r" b) P7 d复制代码  |* H$ ^$ I) X" J. ^  v7 c( x
这个时候length()函数中的pass是猜测的,当然是建立在猜测正确的基础上。* j2 [9 {, @$ a, e8 @  `
这里要说的是,pass和前面select后的userid同属一个表段demo_b2b_admin,所以不需要再带select语句
; ]# o% K: \' d% L' l- t" \, i那么这里就能得到: / L. [) K% j5 ?
复制代码
# o& ^' u+ p5 e' B7 F3 L# q这样,猜数据的方法你肯定是懂了# k, v2 K% o! T  r

- T" _6 I0 K7 I8 E$ \# G
! z- h; m0 L: t7 t1 ^, ^最后,我们来看demo_b2b_admin以外的数据,现在再来猜表段:
8 J# C/ _9 y8 _; E& t" n/ V复制代码
3 W3 h, B/ {" _* n$ X0 I实际运行的SQL语句就是:
9 j# q4 x2 C9 z; M/ H复制代码
1 z' \" [6 M3 e, R" G" J& d上面这个语句,对于information_schema不明白的,可以参考其他MySQL注入文章来看一下这个库的意义。( O: \& H; b; y0 E2 \! j9 J4 x
关于limit x,y 的用法,可以参考MySQL手册/ x! t! z& g/ E% K

0 l& x1 d, g  {4 C! e, }最后剩下的要说的就是ascii函数和hex函数了, G2 M# ]& e1 ~' j& `
这两个函数的意义是避开php的GPC转义,例如:
! Z  n7 P4 Z/ P复制代码
8 |5 l3 c0 c& g7 H8 o, i; @substr()的用法可以参考MySQL手册,如果不懂,就这样套好了。Char()里面的数字替换为ascii码数字




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