【发布时间】:2019-09-11 16:28:10
【问题描述】:
我正在寻找一种在 PHP 中仅使用 eval 来实现 __toString 方法的方法。最终目标是能够读取文件。请注意,这是 CTF 挑战的一部分,而不是真实世界的应用程序。
我得到了以下实现
function __toString(){
eval($this->var);
}
由于 $var 在我的控制之下,我可以将 if 设置为任何我想要的。 到目前为止,我已经尝试了以下但没有成功:
$var = "return file_get_contents('file.txt');"
有什么提示吗?
更新: 相关代码如下:
class MyClass{
private $var;
function __toString(){
if (isset($this->var) eval($this->var);
}
}
【问题讨论】:
-
return从 eval 中返回,也可以试试return eval($this->var); -
@vivek_23 我试过没有,到目前为止没有成功。 :-/
-
@AbraCadaver 不幸的是我无法更改该功能。我唯一控制的是 $var。
-
那你能做的就是
echo file_get_contents('file.txt');