2017-03-22 26 views
0

テーブル(ユーザー)を削除しようとすると、自分のサイトに対してSQLインジェクションをテストしようとしています。SQLインジェクション/ドロップテーブルが動作していないことを確認しました

私のSQL文字列構文:

String sql = "select * from users where username='" + username + "' and password='" + password + "';"; 

私は、パスワードフィールドにユーザ名フィールドでjacktest'; DROP TABLE users; --を入れて、次のSQL文字列を取得します:

select * from users where username='jack' and password='test'; DROP TABLE users; --'; をして、私はそれを実行します。

Statement st = conn.createStatement(); 
ResultSet rs = st.executeQuery(sql); 

しかし、それは機能していません、なぜか?

+0

パスワード文字列を閉じない必要がありますか? inectionは 'DROP TABLE'まで綺麗に見えます。 –

+0

@TimBiegeleisen SQLのコメント演算子です。最後の文字は構文エラーを生成しないように彼が使用したと思います。ちなみに、作業していないことによって、エラーが生成されるのですか、それともテーブルの削除だけが実行されていますか? – encryptoferia

+0

@TimBiegeleisenすみません。私はもう一度チェックして、大丈夫に見える、あなたが何を意味しているのか?多分あなたはそのエラーを見逃しますか? –

答えて

1

パスワードは次のようになります。

' OR 1=1; DROP TABLE users; -- 
  1. '1=1あなたは結果を発見したことを確認します
  2. パスワード文字列を閉じます。
  3. --はEDIT

前のパスワードから最後'をコメントします:私はミスを犯した

。別のハックを考えていた。 1=1は、パスワードチェックをバイパスし、ログイン画面を渡すことです。 ' `クエリの最後にやって -

あなただけの私がどんな経験ハッキング/スプーフィングデータベースを持っていますが、`何をしていることを

'; DROP TABLE users; -- 

enter image description here

関連する問題