同じリクエスト内の2つのSQLは同じパラメータを使用しますが、返される列数は異なります。SQLインジェクションを行うことは可能ですか?

bydsky

以下のように、同じリクエストハンドラに2つのSQLがある場合:

select count(*) from user where id={$id};
select * from user where id={$id};

パラメータ「id」はフィルタリングされていないため、SQLインジェクションを実行できます。ただし、2つのSQLが異なる列数を返すため、unionを使用しようとすると、常にsqlエラーが返されます。 '使用されたSELECTステートメントの列数は異なります。

この場合、SQLインジェクションを成功させることは可能ですか?

ガンボ

SQLインジェクションは、それをうまく利用できるかどうかではなく、SQLコマンドの意図を変更できるかどうかの問題です。そして、これは間違いなくここに当てはまります。

悪用可能性については、ブールベースの手法を使用できます。

123 AND EXISTS (SELECT 1 FROM mysql.user WHERE user='root' AND password LIKE '*235FBD5A943%')

したがって、ルートのパスワードハッシュが最初から始まる場合にのみ、条件*235FBD5A943全体WHEREが真になります。このブールベースの手法(追加条件trueまたはfalse)を使用すると、適切な文字列関数を使用して、アクセス可能な情報を読み取ることができます

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ