最近セキュリティに興味を持ち始めて
qiitaを色々見ていたところ、
OSCPという資格に
「セキュリティ未経験で受験して合格した!」
というのを見て
// OSCP!?、なにそれカッコイイ!
// 俺もハッカーになりたい!
と思いWEBのセキュリティについて勉強することにした。
(と言っても飽きたらすぐやめる可能性大)
とりあえず、
プログラミングに関してはJavaを2年ほど
実務経験積んだので
全然わからないってことはないだろう。
ネットワークに関しても
実務でアプリのリリースとか
していたので、まぁいいかと。
とりあえずは
徳丸本を読みながら
それに対応する脆弱性を
bWAPPというやられアプリで
とにかく試してみるのが良いんかなと思った。
ということで
bWAPPのA1 Injectionでやったことをここに記録する。
SQL Injection (GET/Search)
徳丸本でいうと
SQL インジェクションによる認証回避
のところに書いてある
‘ OR ‘a’=‘a
を使う。
実際に入力する文字列としては
' OR '1' = '1' --'
と入力する。
'「シングルクォーテーション」が
SELECT * FROM テーブル名 WHERE title = '' OR '1' = '1' --'
というSQLが実行されるかと思う。
-- 以下はコメントとして無視される。
SQL Injection (GET/Select)
パラメータとして
movieを受け取っているようです。
movieというカラムがあるのか
調べてみます。
恐らくmoviesテーブルのidをパラメータとして
受け取っているみたいですね。
idは数値リテラルのようなので、
徳丸本の
数値項目に対するSQLインジェクション
をやってみます。
数値を想定した変数に数値以外が入る場合があるらしいです。
全データを取ろうとしましたが、
取れないみたいですね...
order by で数値を入力すると
数値に対応したカラムで並び替えられるらしいです。
UNION SELECTもやってみました。
実際にDBで実行すると
全データ取得できるのに、
パラメータで指定すると
取得できませんでした...
次に、
information_schemaを
使ってみます。
何も出ない...
これもダメでした...
最終的に
色々調べてバージョン、スキーマ名がわかりました。
AND 1=2 UNION SELECT ~の部分がいまいちよく分からない。