当输入附加了扩展名时利用 fopen

Exploiting fopen when input has extension appended

为了科学。

假设我有以下代码:

<?php
$filename = $_GET['filename'] . '.csv';
$handle = @fopen($filename);

我们知道空字节漏洞早已不复存在,但是是否有可能绕过上面附加的 .csv,以便读取具有另一个扩展名的文件?存在非常有创造力的灵魂。

读取远程文件有效,filename=http://example.com/some.csv(自动附加 .csv)。

如果您查询 http://example.com/some.pdf?csvfopen 将尝试收集 pdf 文件...

而是使用正则表达式来验证 $_GET(您应该 始终 验证您的输入):

/(\.csv)$/g 将帮助您验证扩展名是否为 .csv