2017-03-15 4 views
0

SQLコードを入力スペースに挿入することで、自分のデータベースでSQLインジェクション攻撃をシミュレートしようとしています。コメントがあるとMySqlクエリが実行されない

私のSQLコードは次のとおりです。

SELECT * FROM Users 
WHERE username = '...' 
AND password = '...'; 

...が入力されています。

' OR ''=' 

これは、すべてのユーザ名を取得する必要があります。

私はすべてのユーザーを選択するには、以下の入力を使用し、ここで1

にその出力を制限しようとしていますが、ユーザー名の入力です。

そして、ここでパスワード入力は次のとおりです。

' OR ''='' LIMIT 1; -- 

これにより、コードが実行される最初のわずか1行に出力を制限し、その後、すべてのパスワードを取得した後、最終的な';

をコメントすべきである必要があります次のようになります。

SELECT * FROM Users 
WHERE username = '' OR ''='' 
AND password = '' OR ''='' LIMIT 1; -- '; 

これは何らかの理由で機能しません。私はSequelProを使用しており、2つのクエリを実行していて何も出力していないことを示しています。 2番目のクエリは-- ';

ですが、最後の部分を削除して最初のセミコロンまで実行すると、データベースから1人のユーザーを検索して取得します。

何が起こっていますか?

+1

から末尾にセミコロンを取るよりよいこの混乱を避けるため

。 2つのクエリを実行しようとしていますが、APIでは1つしか許可されていません。ミドルセミコロンを削除する必要があります。 –

+0

php mysql apiと複数のステートメントについて読む。それは許可されていません – Jens

+0

ああ私は、ありがとう、参照してください。 2番目のセミコロンは単なるコメントなので、私は混乱しました。私はそれが別の声明としてカウントされていることを認識していません – user2397282

答えて

0

あなたの質問は問題ありません。あなたが持っている問題は、パーサーが鈍いと思われるSequelProからのもので、別のクエリに対してコメントを取っています。私は、エラーがクリアされていると思う鍛造入力

関連する問題