web-dev-qa-db-ja.com

このコンテキストでSQLを挿入するためにHTML文字参照エンコーディングをバイパスすることは可能ですか?

Webサイトの「パスワードのリセット」ページをいじっていました(セキュリティテストとバグハンティングは許可されています)。

メールアドレスを入力すると、HTML文字参照エンコーディングを使用してアドレスがエンコードされます。例えば:

Eメール: [email protected] >> example@example.com

このようにエンコードされていてもSQLコマンドを挿入することは可能ですか?

前もって感謝します

1
Mico

SQLインジェクションは、SQL構文の「値」の部分から「コマンド」の部分にスキップすることで機能します。

文字列値(例のように)は引用符で囲まれています-分割するには、値に同様の引用符を含める必要があります(' WHERE 1; DROP TABLE ...または実際の構文など)。 HTMLエンコーディングでは引用符が許可されていないため、機能しません。

引用符で囲まれていないフィールドについて少し疑問に思いました-例: (ドロップダウンから)数値を期待しているが、コマンド(5 WHERE 1; DROP TABLE ...など)を指定した場合。ただし、単一単語のSQLステートメントは認識していません。つまり、トークンを区切るもの(スペースや句読点(など)がないと何もできません。したがって、数字のような引用符で囲まれていないフィールドを見ている場合でも、ステートメントを台無しにしてエラーを生成する可能性がありますが、実際には何も実行されません。

1
cloudfeet