2017-06-09 7 views
-1

私は大学からインタラクティブな課題を解決しようとしています。ユーザー名とパスワードのフィールドがあります。私は学生IDでログインしなければなりません(もちろん私は知っていますが、ここでそれを明らかにする必要はありません)。シンプルなものを試した後、私は以下のエラーメッセージを受け取りました。私はこれが私を助けるはずだと思うが、わからない。おそらく誰かが私にヒントを与えることができますか?SQLインジェクションを実行する(対話式エクササイズ)

Message

+2

アドバイスの言葉...常にあなたのエラーメッセージのテキストを追加してください。あなたが投稿した画像を読める人がいるかもしれません。 – STLDeveloper

答えて

0

あなたの' OR 1=1と正しい軌道に乗っているように見えますが、あなたはすでにそれを閉じた後に元のクエリ文字列が再び閉鎖されているので、あなたは、構文エラーがあります。あなたがコメント' OR 1=1 --であなたの注射を終えると、残りのステートメントを無視するようにサーバーに指示します。

編集: コメントのアプローチがうまくいかなかった理由はわかりませんが、文字列を再オープンするための他のテクニックを使用しても、まだ十分ではありません。 ANDはORよりも高いので、ユーザー名を持つ行だけでなくすべての行を取得します。 あなたはそれが正しいユーザ名とパスワード、または単に正しいユーザ名を持っている任意の行を持つ任意の行にマッチします

WHERE name='myId' AND password='' OR name='myId' 

を生成する代わりに

' OR name='myId 

試みることができます。

+0

お返事ありがとうございます。残念ながら、これはうまくいきませんでした。あなたの解決策では、私は次のようになります。SELECT name、password FROM login WHERE name = 'myID'、password = ''または1 = 1 - 'SQL構文に誤りがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文が1行目の ''付近で使用されるようにしてください。 – Marm

0

' OR '1'='1または' OR 1=1 --を試すことができます。このような構文エラーは、コード内のクエリ文字列が閉じていないために閉じてみる必要があるためです。

+0

こんにちは、ありがとうございます。あなたの最初の提案では、私は間違いがないのですが、答えは間違っています...あなたの2番目の提案では、エラーメッセージが表示されます:SELECT name、password FROM login WHERE name = 'myID' and password = ''または1 = 1 - 'SQL構文に誤りがあります。あなたのMySQLサーバのバージョンに対応するマニュアルを調べて、正しい構文が第1行目の ''付近で使用できるようにしてください – Marm

関連する問題