thinkphp5-文件包含

今天很烦躁,一直在整理接下来的计划,总觉得时间不够用,就少学了一些,发了这一篇就开始看安卓了,今天看到一句话:“自学学不会的原因不是因为不行,为非就是两点,热情不足,和自制力差”。

影响范围

5.0.0<=version()<=5.0.18 and 5.1.0<=version()=5.1.10

测试代码

1
2
3
4
5
6
7
public function test()
{
$this->assign(request()->get());
var_dump(request()->get());
return $this -> fetch('test');

}

public\output有一个muma.txt,就当是我上传上去的,这个漏洞的目标是去包含执行它

muma.txt

1
2
<?php
phpinfo();

问题出在fetch方法,看一下这个fetch函数到底是哪个类的fetch方法,这里是真的绕.

可以看到最后执行的fetch方法是Template类的。来追溯这个方法

这里调用了read方法 ,那我们需要知道这个storage对象是谁,看一下构造函数可以得知

这里的storage\think\template\driver\File类,我们去看它的read方法。

这里调用了危险函数extract,之后又包含了$cacheFile,这就是一个变量覆盖。这里的

$var也就是这里的request()->get()

所以最后执行,成功。