gpt4 book ai didi

php - 哪些特殊字符会导致文件路径被误解?

转载 作者:行者123 更新时间:2023-12-04 15:48:52 25 4
gpt4 key购买 nike

比如有函数(伪代码):

if ($_GET['path'] ENDS with .mp3 extension) { read($_GET['path']); }

但有没有可能,黑客以某种方式使用了特殊的符号/方法,即:

path=file.php^example.mp3
或者
path=file.php+example.mp3
或者等等...

如果在 php 中存在这样的符号,就像在那个符号之后,一切都被忽略,PHP 试图打开 file.php..

附注不要发布有关保护的答案!我需要知道这个代码是否可以被绕过,因为我要报告这个问题的许多脚本(如果这真的是一个问题)。

最佳答案

if something such symbol exists in php, as after that symbol, everything was ignored, and PHP tried to open file.php..

是的,such a symbol exists ;它被称为“空字节”(“\0”)。

因为在 C(用于编写 PHP 引擎的语言)中,“字符串”的结尾由空字节表示。因此,无论何时遇到空字节,字符串都会结束。

如果您希望字符串以 .mp3 结尾,您应该手动附加它。

话虽如此,从安全的角度来看,一般来说,接受用户提供的路径是一个非常糟糕的想法(而且我相信您对此的安全方面感兴趣,因为您最初在 security.SE 上发布了这个问题。

考虑以下情况:

 $_GET['path'] = "../../../../../etc/passwd\0";

或此主题的变体。

关于php - 哪些特殊字符会导致文件路径被误解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37243196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com