我正在帮助我的朋友保护他的网站。他给了我源文件,我发现了一些在我看来可能会导致很多问题的东西,但是和以前一样,我的朋友说这部分代码是安全的:
if(is_file('foo/' . $_POST['f'] . '/bar/foo.php'))
{
include('foo/' . $_POST['f'] . '/bar/foo.php');
}
我已经向他展示了我可以绕过include()
函数,但他说,is_file()
这部分代码是 100% 安全的,请帮我向他展示代码不安全,或者让我相信这段代码是安全的。
此代码绕过include()
功能(WINDOWS):
curl_setopt($ch, CURLOPT_POSTFIELDS, 'f=../foo/bar.php' . str_repeat('.', 4086)); // without is_file() check this request leads to LFI
但is_file()
仍然返回 false