中国网络渗透测试联盟

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

作者: admin    时间: 2013-9-25 13:52
标题: MySQL盲注最全 实例讲解 详解
本文实例来自习科论坛交流三群。这个注入点可以使用错误回显注入来爆数据,本文出于讲解的目的,使用更麻烦的盲注。
" W3 R0 W" Y) q; r. B. i( `阅读本文,需要有一点点SQL基础。盲注理解起来其实非常简单,就是做起来非常费劲
% f& n! }! k: b+ h5 W( n" g# K作者:YoCo Smart
" W' f- D+ I6 p$ }来自:习科信息技术 - http://BlackBap.Org
4 w# ]' q3 w  Y& L* E我们先来看注入点,是一个B2B网站建站公司:
/ {( |- q. x+ ~& }" m; }$ {复制代码
8 L( D. X8 N0 Q% l错误提示已经很明了了。我们看一下注入页面的代码(有删改):
+ T( `. B1 l+ R- i) O0 Q9 ]" i复制代码
6 \2 }( M- [& j6 y6 {3 G2 i& F以GET方式取值的变量js_user虽然没有过滤被直接带入了数据库执行,并且MySQL也执行了,但是并没有显示数据库的任何信息,而是判断是否符合
) o3 J" [' y' c' _) `6 u6 D那么我们先从union的盲注来看吧。
' l& f- b' I. h先看版本: 1 q/ ^" G" S4 L+ r. T: _: r
复制代码
' D( w" _" {. w. P这个时候我们来看看原来的代码中的SQL语句是怎么执行的:
( S) N/ B: D' P, E# }* B2 a复制代码' @1 S+ ~9 i% ]1 Z8 c9 q9 I3 h+ p
因为执行成功,所以不符合if(!$num)这个条件,回显“用户名已被注册”,那么版本为5成立
0 V+ _2 {8 Y) E* C1 H. H$ K再来看database()的数据: $ F! v: `+ F& ?# T
复制代码4 \5 p% @! M/ t6 z, l
length()函数是计算括号中数据的长度,回显为纯数字,可以用大于小于和等于号来判断是否正确。
5 B+ O+ d& A5 b4 J: D1 ]* T# e这里要注意看一下left()函数中的数字变化,关于left()函数,可以自行参考MySQL手册。
8 X) B( |3 \! l1 N再来看一点简单的判断句: " v$ I' `; S! o5 c& \* l7 f* l
复制代码7 y+ I7 ^9 @* A/ }0 E" D! @# ~
这个时候length()函数中的pass是猜测的,当然是建立在猜测正确的基础上。5 m8 {6 y" f: C+ p+ l
这里要说的是,pass和前面select后的userid同属一个表段demo_b2b_admin,所以不需要再带select语句
2 U$ }: J7 `1 u6 X7 o那么这里就能得到:
* p+ x6 [( i/ T4 h6 N1 b复制代码
* r5 Q8 ]2 Q# c这样,猜数据的方法你肯定是懂了
. P, P% T8 L( O: G" e/ K4 j6 i3 {7 ^
1 u3 M1 {& y+ s! i4 c
" L# g- v9 h; `: ?" k/ h最后,我们来看demo_b2b_admin以外的数据,现在再来猜表段: # J3 N; ]: ?  ]! d
复制代码
: m: s, I- I2 N3 l# d) d" i4 ]实际运行的SQL语句就是: : T" O( `( P7 l$ ?
复制代码  V* P& P. V! s1 k8 h
上面这个语句,对于information_schema不明白的,可以参考其他MySQL注入文章来看一下这个库的意义。
8 u: c& |2 x7 w& f  M* t2 @关于limit x,y 的用法,可以参考MySQL手册  E: U8 O, |( r2 |$ l. b

, p& [) e; s6 M* a! ?) `最后剩下的要说的就是ascii函数和hex函数了- f6 R$ K& y; W7 U  V9 T
这两个函数的意义是避开php的GPC转义,例如: / r% K" K2 R$ ]& |4 Q, \
复制代码
2 i7 i4 {1 \+ ]0 ^- ^; Vsubstr()的用法可以参考MySQL手册,如果不懂,就这样套好了。Char()里面的数字替换为ascii码数字




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