безопасность — манипулирование файлом file_put_contents

Я пытаюсь написать файл PHP на сервере и обойти расширение в конце.

Это файл PHP — 1.php:

<?php
file_put_contents("folder\\".$GET['file'].".PNG",$_GET['content']);
?>

Я пытаюсь обойти расширение PNG и написать файл PHP.
как это:

1.php?file=attack.php%00&content=blabla

но это не работает

Я старался:

Null char (%00,%u0000)

Long filename

CRLF chars

space char

?,&,|,>,<,(,),{,},[,],\,!,~,:,; chars

backspace char

../

протокол php

php://filter/write=convert.base64-decode/resource=1.php

(не будет работать, потому что папка в попрошайничестве)

У кого-нибудь есть идеи?

Спасибо!

0

Решение

Здесь есть несколько фундаментальных проблем;

  • Этот код очень небезопасно, я могу установить получить как ../../1.php и переписать этот файл, чтобы сделать все, что я хочу. Похоже, что вы проводите некоторое тестирование безопасности, так что я думаю, что это может быть проблема
  • PHP не является протоколом, это язык так php://anything не должно работать.
  • folder\\ не имеет смысла, что это должно быть / делать?

Тем не менее, хотя, в образовательных целях, готовящихся ../../ должен позволить вам вырваться из folder/ каталог.

Например, если это в /home/Zak/mytest/ с ожиданием каталога внутри этого folder предназначен для хранения этих файлов PNG, а затем file из ../../zak_homedir должен положить файл в /home/Zak/zak_homedir.PNG из-за относительного разрешения пути.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]