中国网络渗透测试联盟

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

作者: admin    时间: 2013-9-25 13:52
标题: MySQL盲注最全 实例讲解 详解
本文实例来自习科论坛交流三群。这个注入点可以使用错误回显注入来爆数据,本文出于讲解的目的,使用更麻烦的盲注。0 O! z& \9 ~6 T2 `$ a
阅读本文,需要有一点点SQL基础。盲注理解起来其实非常简单,就是做起来非常费劲
# E: c- e1 j2 n( q* k- ~作者:YoCo Smart
5 q4 n1 [' k8 ~, g/ F来自:习科信息技术 - http://BlackBap.Org) f; U* e/ C1 V" L$ J# K
我们先来看注入点,是一个B2B网站建站公司: ' m6 Z% \( r/ K3 z
复制代码- K) k  V- T$ ?5 W( b
错误提示已经很明了了。我们看一下注入页面的代码(有删改): ( ^. g/ h6 v( F" Z$ i  e
复制代码
8 E) E- i1 @! x以GET方式取值的变量js_user虽然没有过滤被直接带入了数据库执行,并且MySQL也执行了,但是并没有显示数据库的任何信息,而是判断是否符合0 h$ J8 W' _# P9 F, w$ {6 f# Z
那么我们先从union的盲注来看吧。* w3 f; f: G3 A
先看版本:
1 r5 Q% w" f& ^# A  X复制代码
# i4 X4 p/ ?' z这个时候我们来看看原来的代码中的SQL语句是怎么执行的:
) R" I  u/ I9 h$ |; g复制代码9 I" n- e8 K8 \
因为执行成功,所以不符合if(!$num)这个条件,回显“用户名已被注册”,那么版本为5成立8 V- B  e: x: [9 h! n. v1 M
再来看database()的数据:
1 Q. Y7 H: i8 e" W; H6 a8 T复制代码
3 ~/ P/ w$ i( X5 t2 Hlength()函数是计算括号中数据的长度,回显为纯数字,可以用大于小于和等于号来判断是否正确。
3 @5 ^9 e5 w. r. @0 n+ q4 b这里要注意看一下left()函数中的数字变化,关于left()函数,可以自行参考MySQL手册。# b; c0 L9 V$ g* A7 ?
再来看一点简单的判断句: ) K2 J0 R+ F) s3 t* `
复制代码
8 X/ t. F7 |: i这个时候length()函数中的pass是猜测的,当然是建立在猜测正确的基础上。" A8 B  Y# U5 }0 }1 q$ H
这里要说的是,pass和前面select后的userid同属一个表段demo_b2b_admin,所以不需要再带select语句
: O4 z% @& v+ {! g/ I那么这里就能得到: ( @0 o- U9 l! }% Q4 z1 O  G
复制代码
5 w: {$ \& U& g) q- `) ]& F5 h8 {# B这样,猜数据的方法你肯定是懂了7 U, k; C& z' ?) u8 k/ W  ?  e
& N- r/ E8 S6 u7 h% m
* [% L7 a9 ~2 b- b) u
最后,我们来看demo_b2b_admin以外的数据,现在再来猜表段:   N: n! n2 }' K; G
复制代码2 \; r9 @# z" W* A0 i: _# h9 o0 _  l
实际运行的SQL语句就是:
" ~% D2 Z5 x: s, m+ ~复制代码7 q4 A5 n  l' k0 d! C/ ?
上面这个语句,对于information_schema不明白的,可以参考其他MySQL注入文章来看一下这个库的意义。
3 z( N, _; `7 |$ [关于limit x,y 的用法,可以参考MySQL手册1 s' L8 Y6 u  m) N8 @3 j& R
" k, k$ W$ N: {5 q# y
最后剩下的要说的就是ascii函数和hex函数了
- H/ }# i! h6 d0 ~这两个函数的意义是避开php的GPC转义,例如: * F" F+ h% d: i
复制代码
1 O: y4 n# R7 n8 j* zsubstr()的用法可以参考MySQL手册,如果不懂,就这样套好了。Char()里面的数字替换为ascii码数字




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