# 在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
![](https://images.seebug.org/contribute/303d783c-7435-4f19-ad2f-7da6d5715b15)
利用点在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
![](https://images.seebug.org/contribute/ae21b3c3-74fa-4dfe-af94-65d0a7e24349)
第二种getshel方法就简单了,后台可以任意执行SQL语句,完全没有被阉割,这不讲道理啊
![](https://images.seebug.org/contribute/fa74fbae-c938-471c-9a5b-0c9d7f8c6cb0)![](https://images.seebug.org/contribute/0c489d4e-77cd-451e-a864-ed6db5facde8)
菜刀连接即可
暂无评论