質問
先日サーバーのログを見ていたら気になるログがありました
1 /?パラメータ1=xxxxx&パラメータ2=xxxx AND 1=1 2 /?パラメータ1=xxxxx&パラメータ2=xxxx' AnD sLeep(3) ANd '0'='0 3 /?パラメータ1=xxxxx&パラメータ2=xxxx' AnD sLeep(3) ANd '0'='0 4 /?パラメータ1=xxxxx&パラメータ2=xxxx" union select unhex(hex(version())) -- "x"="x 5 /?パラメータ1=xxxxx&パラメータ2=xxxx or (1,2)= (select*from(select name_const(CHAR(111,108,111,108,111,115,104,101,114),1), name_const(CHAR(111,108,111,108,111,115,104,101,114),1))a) -- and 1=1
1 なぜorじゃないのかなと思ったんですが、おそらくsqlインジェクションが可能か確認している?
2,3は応答時間が3秒たつかどうか(確認するのには短い時間だとは思います。。)でsqlインジェクションが可能か確認している
4はdbのバージョンを調べている
質問1
5がよくわかりませんでした。これは一体何をしているのででしょうか??
質問2
例えばsqlインジェクションの脆弱性があったとしても画面へのエラー表示を抑制していた場合(サーバーエラーの場合予め用意しておいたページに誘導など)、DBの情報を知り得ることはできないとういことでよいのでしょうか?
質問3
1はすべてステータスコードが500になっていました。ただしシステムではパラメータを直接sqlの条件に入れていることはなく、またフレームワークのプレースホルダを使っているのでなぜ500エラーになったのかわかっていません。この値をurlから入れて500エラーを再現しようとしても再現できずステータスコード200になります。
質問3ですが、再現の仕方が悪いので再現できないのでしょうか?それとも別の要因でステータスコードが500になっているのでしょうか?
例えば1の場合下記をブラウザのURL欄に入力して再現しようとしています
ドメイン/?パラメータ1=xxxxx&パラメータ2=xxxx AND 1=1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。