$num = $_GET['fileid']; // get file id
$realfile = "filename".$num.'.txt';
Run Code Online (Sandbox Code Playgroud)
我的问题是,这还有可能使毒药无效吗?根据我的实验,最后的'.txt'不会随着空字节注入而消失.有没有办法空字节这个?
我相信您的代码可能容易受到目录遍历攻击 - 如果有人提供“/../../foo”作为fileid,那么路径将为"filename/../../foo.txt",这可能是有效的目标。请参阅: http: //en.wikipedia.org/wiki/Directory_traversal
我和@jeroen 和@shiplu.mokadd.im 一起建议清理你的输入 - 假设fileid是一个数字,那么这个intval()函数就可以了:
$num = $_GET['fileid'];
$num = intval( $num );
if( $num == 0 ) {
echo "Invalid file ID: Not a number.";
exit;
} else {
$fileName = 'filename' . $num . '.txt';
if( !file_exists( $fileName ) ) {
echo "Invalid file ID: Doesn't exist.";
} else {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1209 次 |
| 最近记录: |