当输入附加了扩展名时利用 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?csv
,fopen
将尝试收集 pdf 文件...
而是使用正则表达式来验证 $_GET
(您应该 始终 验证您的输入):
/(\.csv)$/g
将帮助您验证扩展名是否为 .csv
为了科学。
假设我有以下代码:
<?php
$filename = $_GET['filename'] . '.csv';
$handle = @fopen($filename);
我们知道空字节漏洞早已不复存在,但是是否有可能绕过上面附加的 .csv,以便读取具有另一个扩展名的文件?存在非常有创造力的灵魂。
读取远程文件有效,filename=http://example.com/some.csv(自动附加 .csv)。
如果您查询 http://example.com/some.pdf?csv
,fopen
将尝试收集 pdf 文件...
而是使用正则表达式来验证 $_GET
(您应该 始终 验证您的输入):
/(\.csv)$/g
将帮助您验证扩展名是否为 .csv