Webサイトの「パスワードのリセット」ページをいじっていました(セキュリティテストとバグハンティングは許可されています)。
メールアドレスを入力すると、HTML文字参照エンコーディングを使用してアドレスがエンコードされます。例えば:
Eメール: [email protected]
>> example@example.com
このようにエンコードされていてもSQLコマンドを挿入することは可能ですか?
前もって感謝します
SQLインジェクションは、SQL構文の「値」の部分から「コマンド」の部分にスキップすることで機能します。
文字列値(例のように)は引用符で囲まれています-分割するには、値に同様の引用符を含める必要があります(' WHERE 1; DROP TABLE ...
または実際の構文など)。 HTMLエンコーディングでは引用符が許可されていないため、機能しません。
引用符で囲まれていないフィールドについて少し疑問に思いました-例: (ドロップダウンから)数値を期待しているが、コマンド(5 WHERE 1; DROP TABLE ...
など)を指定した場合。ただし、単一単語のSQLステートメントは認識していません。つまり、トークンを区切るもの(スペースや句読点(
など)がないと何もできません。したがって、数字のような引用符で囲まれていないフィールドを見ている場合でも、ステートメントを台無しにしてエラーを生成する可能性がありますが、実際には何も実行されません。