概要$_SERVER[‘SCRIPT_NAME’]はPHP用の1つ組み込み変数です。ここでは、使用時には、一般的にフィルタリングされません。fuzzの後、この変数の取得は実際に問題がある、予期しないデータが導入されます。一部のWebサーバーでは、この変数を直接使用すると、SQLインジェクションまたはxssの脆弱性が発生する可能性があります。$_SERVER['SCRIPT_NAME']変数があります。MySQL/5.5.53です。現在Apache/2.4.23でのみ成功しています。$_SERVER['SCRIPT_NAME']変数の公式ドキュメントは次のとおりです:img簡単に言えば、この変数は、Webサービスのルートディレクトリから現在のファイルへのパスを返します。Webルートディレクトリが/var/www/htmlで、現在のファイルパスが/var/www/html/t/index.phpであると仮定すると、index.phpで取得された$_SERVER['SCRIPT_NAME']は/t/index.php。上記は正常なプロセスです。PHPにはパラメータを渡る方法が2種類があります。=1のような、キーと値のペアの伝統的な形式です。一つのルートで、パラメータを渡すことです:/index.php/xx/b/c。$_SERVER['SCRIPT_NAME']変数は、ルートでパラメータを渡すことにさらに有害です。/*を追加することができます。/*を追加して、ファイル名を破棄して、ファイル名の後にデータを取得できます。imgimgテストでは、'(一重引用符)"(二重引用符)、;(セミコロン)<>(角カッコ)()(カッコ)などのペイロードで一般的に使用される記号はフィルタリングされません。一般的なCMSでは、一般にGET、POST、COOKIEの3つの変数のみがフィルタリングされます.GPCのグローバルエスケープが有効になっていても、$_SERVER変数はエスケープされません。特別な注意が必要なのは、ペイロードに?(疑問符)は表示されません、疑問符が切り捨てられ、ファイル名の後にデータを取得できなくなります。私はかつてこのCMSに遭遇し、$_SERVER['SCRIPT_NAME']をページに直接書きました。このようにして、反射的なxss攻撃を実行できます。CMSはヘッダを保護せずにphpファイルとして直接ページをキャッシュします。言い換えれば、私たちが書くPHP文もキャッシュファイルにキャッシュされます。WebShellを直接生成します。コード監査中に$_SERVER['SCRIPT_NAME']変数を追跡して、変数の値がデータベースに渡されるか、ページに直接渡されるかどうかを調べることができます。indigo扫一扫,分享到微信{title}{tags}{date}。