侵入テスターによってアップロードされた PHP ファイルでは、cmd POST パラメータを通じて提供されたコマンドを実行することで、リモート コード実行 (RCE) が可能になります。これを悪用するには、侵入テスターは、実行するコマンドを含む POST リクエストを PHP ファイルに送信する必要があります。 与えられたオプションの中で、オプション A が RCE を達成するのに最も適しています。 * Python のリクエスト ライブラリを使用して POST リクエストを送信します。これは、PHP スクリプトが POST メソッドを通じてデータを期待しているため適切です。 * request.post 関数のデータ パラメータは辞書として正しくフォーマットされています。これは、POST リクエストでフォーム データを送信するための想定される形式です。これには、現在のユーザー ID とグループ ID を表示するために使用される一般的なコマンドである、値 id を持つキー cmd が含まれます。 * オプション A の唯一の小さな問題は、応答オブジェクト全体が印刷されることです。応答オブジェクトには、応答コンテンツだけでなく、ステータス コードやヘッダーなどのメタデータも含まれます。応答コンテンツ (id コマンドの出力を含む) のみを印刷するには、requests.post 呼び出しに .text を追加する方が正確ですが、これは小さな詳細であり、コマンドの実行には影響しません。 他のオプションにはさまざまな問題があります。 * オプション B は近いですが、データ引数に構文エラーがあります。辞書に中括弧 {} ではなく括弧 () が使用されており、応答コンテンツを印刷するための末尾の .text も欠けています。 * オプション C と D は、requests.get メソッドを使用しますが、PHP スクリプトは GET メソッドではなく POST メソッドを通じてデータを受け取ることを期待しているため、このシナリオには適していません。また、オプション D にはオプション B と同様の構文エラーがあります。