アップロード フォームで Null Byte Injection 攻撃を再現しようとしています。私はこのコードを持っています:
<?php
if(substr($_FILES['file']['name'], -3) != "php") {
if(move_uploaded_file($_FILES['file']['tmp_name'], $_FILES['file']['name']))
echo '<b>File uploaded</b>';
else
echo '<b>Can not upload</b>';
}
else
echo '<b>This is not a valid file/b>';
?>
次のような名前のファイルをアップロードしようとしています: file.php%00jpgしたがって、substr() をバイパスし、file.php としてアップロードされます。
問題は、アップロードされたファイルの名前がサーバー上では file.php ではなく、file.php %00jpg ( URL バーに/file.php%2500jpgと入力してアクセスできます) であることです。
move_uploaded_file() は null バイトを気にしないようですが、これはどのように機能しますか? 私のコードで拡張子が .php のファイルをアップロードすることはできますか?
ありがとう :)。