# 在D:\phpStudy\WWW\xercms\XerCMS\Services\admin\forms.php中的updateTemplate()函数
```
function updateTemplate() {
$sname = g('sname');$data = stripslashes(p('content'));
file_put_contents(INC.'Data/forms/template/'.$sname.'.htm',$data);
$this->tips('finish',dreferer());
}
```
可以看到
```
file_put_contents(INC.'Data/forms/template/'.$sname.'.htm',$data);
```
写入的文件名`$sname`可控,写入的内容 `$data` 只是stripslashes,也可控,但是后缀名是html,我们先写代码进html文件,下面的利用点就是包含了该html文件,导致可以getshell

利用点在D:\phpStudy\WWW\xercms\XerCMS\Services\admin\member.php中的editmember函数
```
function editmember() {
$id = int1(g('id'));$model = g('model','personal');
$member = memberdata($id);$member = array_merge($member,i('m.member')->getProperty($id,$model));
include_once($this->tpl('header.htm'));
include_once($this->tpl('../../../Data/member/model/template/'.$model.'.htm'));
}
```
可以看到这里
```
include_once($this->tpl('../../../Data/member/model/template/'.$model.'.htm'));
```
$model变量可控,完全可以包含我们之前构造的html文件,导致getshell

第二种getshel方法就简单了,后台可以任意执行SQL语句,完全没有被阉割,这不讲道理啊

菜刀连接即可
暂无评论