Вообще, тема с передачей нулл байта через имя файла в глобальном массиве $_FILES очень интересна, например, мне не удалось сделать это ни разу передачей %00 или \0, \х00 и т.д. ни через имя файла, ни через тампер дату и перехват пакета HTTP.
Видимо это действительно связано с
Сообщение от
(Dm)
2. В случае загрузки файлов, используется метод:
multipart/form-data
Он означает что передаются бинарные данные, соотвественно эти данные не будут url декодированными и %00, так и останется %00
Ранее где-то проходила информация, что это возможно и на основе этого были вроде даже баги каких-то двигов...
В частности, в статье Минаева "Роковые ошибки php" https://forum.antichat.ru/thread54355.html упоминается такой метод обхода
На первый взгляд вполне логично , что файл с именем file.jpg.php не пройдет проверку , однако попробуем вставить null bute в имя файла и
в конечном виде получится чтото вроде my_data.php%00.jpg . Удачная попытка и наш файл залить с именем my_data.php .
который будет работать только в результате дополнительного преобразования через urldecode($_FILES['userfile']['name']).
Я могу лишь предположить, что данная уязвимость успешно работала на старых версиях ПХП, когда массива $_FILES не было, а использовался $HTTP_POST_FILES.