中国网络渗透测试联盟

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

作者: admin    时间: 2013-9-25 13:52
标题: MySQL盲注最全 实例讲解 详解
本文实例来自习科论坛交流三群。这个注入点可以使用错误回显注入来爆数据,本文出于讲解的目的,使用更麻烦的盲注。
0 \6 x! t% B0 D, J. u7 ?8 [阅读本文,需要有一点点SQL基础。盲注理解起来其实非常简单,就是做起来非常费劲) |- ~7 Q  J. k3 i
作者:YoCo Smart
) H; w# f& ?* ]3 |7 B1 L来自:习科信息技术 - http://BlackBap.Org
+ N" H% p4 c* j8 c我们先来看注入点,是一个B2B网站建站公司: - U6 y) g$ @$ W' W: H3 b
复制代码
, p; u  p  T, |& x, f9 Q$ L错误提示已经很明了了。我们看一下注入页面的代码(有删改):
# f2 T, T1 A/ A0 J7 @复制代码) e  _2 T. n% t( J' A
以GET方式取值的变量js_user虽然没有过滤被直接带入了数据库执行,并且MySQL也执行了,但是并没有显示数据库的任何信息,而是判断是否符合! F3 b! W) G$ O) {5 A- G3 O
那么我们先从union的盲注来看吧。8 B+ I5 @% y7 g7 }8 O
先看版本: 8 H- n5 I, K2 x" @9 s0 |( E/ P
复制代码
3 R) A* k9 d2 S( v3 g6 q, M* Y这个时候我们来看看原来的代码中的SQL语句是怎么执行的:
6 H1 l, h! ]5 h( H3 i( M8 j! w4 Z复制代码/ _. E! q) |. y4 X1 K- {
因为执行成功,所以不符合if(!$num)这个条件,回显“用户名已被注册”,那么版本为5成立1 N' q3 w" {" f% ]& K
再来看database()的数据: : ~0 E% H$ I6 [1 Q
复制代码
" W+ L9 e; ~8 \9 W$ a' d* ~length()函数是计算括号中数据的长度,回显为纯数字,可以用大于小于和等于号来判断是否正确。
( ?5 v/ A. {1 F& q这里要注意看一下left()函数中的数字变化,关于left()函数,可以自行参考MySQL手册。! H; S( _% a3 f1 p2 G; u
再来看一点简单的判断句:
. o& E( T% f. [, t6 d复制代码7 Y) T& {+ a( `: S" y
这个时候length()函数中的pass是猜测的,当然是建立在猜测正确的基础上。3 L5 U+ G* [; w" [
这里要说的是,pass和前面select后的userid同属一个表段demo_b2b_admin,所以不需要再带select语句3 d+ [3 [' Q6 C; }' `
那么这里就能得到:
/ f* p. r* n2 b5 ]# |$ z复制代码
6 i) y( b( k3 J' R$ |这样,猜数据的方法你肯定是懂了
1 Q8 }  D, D: |, }9 j% W
0 o6 s( t) e/ p7 S' u
0 n6 X& T6 D& ~/ G; e  k* x最后,我们来看demo_b2b_admin以外的数据,现在再来猜表段:
8 P, c/ S/ V7 R复制代码
& E; H5 ^# C! _( m4 l- i' k7 @实际运行的SQL语句就是:
/ W& I7 @' X  U" I' C8 B1 a复制代码1 }& N) ~1 C8 t- N5 Z
上面这个语句,对于information_schema不明白的,可以参考其他MySQL注入文章来看一下这个库的意义。6 Q6 Y4 [5 |3 \: V
关于limit x,y 的用法,可以参考MySQL手册
5 u. C/ ~5 k4 ]  e1 L
& A; s1 w! R% J+ {6 H/ u" D最后剩下的要说的就是ascii函数和hex函数了
7 i  b: j2 _- T这两个函数的意义是避开php的GPC转义,例如: 2 K1 \* T5 O$ d& e# E7 \/ |
复制代码+ L, P% r1 C; S6 X
substr()的用法可以参考MySQL手册,如果不懂,就这样套好了。Char()里面的数字替换为ascii码数字




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