中国网络渗透测试联盟

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

作者: admin    时间: 2013-9-25 13:52
标题: MySQL盲注最全 实例讲解 详解
本文实例来自习科论坛交流三群。这个注入点可以使用错误回显注入来爆数据,本文出于讲解的目的,使用更麻烦的盲注。: R3 e& [. {4 T
阅读本文,需要有一点点SQL基础。盲注理解起来其实非常简单,就是做起来非常费劲6 A; k( V- Q( A! U8 ^  K. @5 g
作者:YoCo Smart# ~* @( j2 H1 }2 r! U4 @
来自:习科信息技术 - http://BlackBap.Org
! k! W& S! u* m我们先来看注入点,是一个B2B网站建站公司:
- K+ N8 |/ l5 g5 N: i复制代码
" q) A! i# N/ K错误提示已经很明了了。我们看一下注入页面的代码(有删改): ' T% S, _  G: {+ S
复制代码
- h1 P+ p$ `* P0 t& d/ X以GET方式取值的变量js_user虽然没有过滤被直接带入了数据库执行,并且MySQL也执行了,但是并没有显示数据库的任何信息,而是判断是否符合
, w5 H3 ]) I* u+ |那么我们先从union的盲注来看吧。
6 H  F) b# r, o: y  `4 j. g9 J先看版本:
) q# c3 K' j! s9 x" }复制代码# i; M9 |6 z# m, r: I: q
这个时候我们来看看原来的代码中的SQL语句是怎么执行的:
2 a% C& L: t, b+ b+ W. X8 |复制代码6 |2 R4 D- O4 K4 U/ v/ p% E& D
因为执行成功,所以不符合if(!$num)这个条件,回显“用户名已被注册”,那么版本为5成立7 A; q# S7 t; W- F0 O
再来看database()的数据:
4 e6 _% E/ v$ q3 z5 ]& d: j复制代码4 R. K7 t: a' _$ t' M
length()函数是计算括号中数据的长度,回显为纯数字,可以用大于小于和等于号来判断是否正确。7 J: M; Q' \0 X$ O2 L  n( a' I
这里要注意看一下left()函数中的数字变化,关于left()函数,可以自行参考MySQL手册。
3 A" Z7 w  v; Y  L! S( B: w再来看一点简单的判断句: 2 I' x  c' N3 ?9 |3 Z
复制代码7 r- u) x7 E' q( e8 h$ o
这个时候length()函数中的pass是猜测的,当然是建立在猜测正确的基础上。5 ]* S; C* R$ d
这里要说的是,pass和前面select后的userid同属一个表段demo_b2b_admin,所以不需要再带select语句5 B5 A0 O4 i- p6 k0 j1 n2 d  X8 m
那么这里就能得到:
+ N1 E! X& u+ @; @  ?复制代码
) ~8 U$ b( i8 x7 j7 G' o这样,猜数据的方法你肯定是懂了
- b  c( \. i0 }$ h4 u* P
' q" M- A9 u6 \" x2 R0 N2 ^. k$ f5 Q# J1 o
最后,我们来看demo_b2b_admin以外的数据,现在再来猜表段:
, Q! h8 y4 X5 v' o( ~& |. X复制代码
9 r5 V' K' {" Q# a% ^实际运行的SQL语句就是: # E$ m7 ]7 L. X' X( P
复制代码8 b2 B) q- v& j7 _9 v. |( r5 H" M5 X# A
上面这个语句,对于information_schema不明白的,可以参考其他MySQL注入文章来看一下这个库的意义。
0 I7 }* G4 E6 `+ s0 P: ]% I& D/ F关于limit x,y 的用法,可以参考MySQL手册+ }  |" @) J" m( {3 x
+ o8 z# k; F( R, c/ ?( S! u) P0 [
最后剩下的要说的就是ascii函数和hex函数了
- i/ h) {. t  f' E, d# m这两个函数的意义是避开php的GPC转义,例如:
+ W* m& ^* X* }0 r! k复制代码- [; O# A9 ?8 |- e% K3 W% P, ^
substr()的用法可以参考MySQL手册,如果不懂,就这样套好了。Char()里面的数字替换为ascii码数字




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