sql
  • sql-injection
  • 2017-03-12 11 views 0 likes 
    0

    SQLクエリのコメントについて質問があります。 SQLクエリは、だから私は1' or 1=1; #ことを、私は期待が、私が代わりに#のコメント--を使用するとき、私は構文エラーを取得するよう、私は、すべてのユーザーとパスワードを取得してみてくださいそのフォーム
    $query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
    を持っています。なぜそれが起こっているのですか?
    それぞれの場合にSQLがどのように形成されるのか説明できますか?
    また、私は1' or 1=1 #にも注意しています。 #記号はコメントアウトしません。 ?DVWA SQLインジェクション

    答えて

    2

    あなたはmysql manualで読むことができたよう:

    MySQLで

    は、 - (ダブルダッシュ)コメントスタイルは、少なくとも一つの空白または制御文字が続くされる第2のダッシュが必要です(などスペース、タブ、改行など)

    入力には、--だけを追加すると、空白または制御文字は続きません。あなたの合成されたクエリは、次のようになります。あなたが見ることができるように、ダブルダッシュはそれはコメントとみなされていないと構文エラーにつながる;ですぐを踏襲している

    SELECT first_name, last_name FROM users WHERE user_id = '1' or 1=1--'; 
    

    ;についてエンド

    で(末尾の空白と)--に入れてみてください:これは、サーバーに発行されたクエリでは必要ありません。これはのみで、異なるステートメントを区切りますが、単一ステートメントはまったく必要ありません。

    mysqlコマンドラインクライアントは、その文字をサーバに送信せず、「実行命令」として扱います。

    関連する問題