脆弱性の発生するメカニズム 脆弱性の原因はlibraries/mult_submits.inc.php の以下の部分です。 case 'replace_prefix_tbl': $current = $selected[$i]; $newtablename = preg_replace("/^" . $from_prefix . "/", $to_prefix, $current); 上記再現手順の場合、preg_replace関数の呼び出しは以下の引数となります。 preg_replace("/^/e\0/", "phpinfo();", "test"); preg_replace関数(PHP5.4.6以前)の第1引数はバイナリセーフでないため、NULLバイト以降が無視され、結局以下の引数で呼び出されたのと同じになります。 preg_replace("/^/e", "phpinfo();