Null バイト関連の問題 PHP はファイルシステム関連の操作に C 言語の関数を使用しているので、 null バイトの処理を予期せぬかたちで行うことがあります。 C 言語では null バイトは文字列の終端を表すので、 null バイトを含む文字列があった場合に null バイト以降の内容は文字列として処理されません。 以下に、この問題に関する脆弱性を含むコード例を示します。 <?php $file = $_GET['file']; // ここで "../../etc/passwd\0" が渡されたとします if (file_exists('/home/wwwrun/'.$file.'.php')) { // file_exists は true を返します。これは、ファイル /home/wwwrun/../../etc/passwd が存在するからです include '/home/
![PHP: Null バイト関連の問題 - Manual](https://cdn-ak-scissors.b.st-hatena.com/image/square/4dd02c2555ca1b32548779e23dc3e33a9f46bf13/height=288;version=1;width=512/https%3A%2F%2Fwww.php.net%2Fimages%2Fmeta-image.png)