防衛省CTFで解けなかった問題のうち、悔しいと思った問題のみ、他人のwriteupを参考に勉強した。
Web Insecure 20 (正解者数 95)
あなたは社内ポータルサイト(hxxp://10.10.10.33)の管理者に依頼されて、profile ページが安全に保護されているかチェックすることになりました。 以下のログイン情報を用いてサイトにログインし、管理者の profile ページに記載されている秘密の情報を見つけてください。 なお、依頼の際に「管理者ページのidは0だよ」というヒントをもらっています。
【ログイン情報】
User: testUser
Password: diejuthdkfi14
Webアプリケーション脆弱性診断士の講座では、「許可制御の不備・欠落」という診断項目。
解かなければいけない問題。
Burpで挑む
HTTP History を確認
Repeaterで
/show_profile.php?id=1
を
/show_profile.php?id=0
に変更してみる
profile_error.phpにリダイレクトされる。
profile_error.phpをブラウザで確認すると、他人のデータを覗くなと怒られる
が、そこから無理に Repeater で profile_success.php にアクセスすると
フラグが見える
ソースコードは、こんな感じかな?
<?php
// セッションを開始
session_start();
// セッション変数からIDを取得
if(isset($_SESSION['user_id'])) {
$id_old = $_SESSION['user_id'];
}
// GETからIDを取得
if(isset($_GET['id'])) {
$id_new = $_GET['id'];
// GETでもらったIDは無条件にセッション変数へ(強引な脆弱性だ)
$_SESSION['user_id'] = $id_new;
}
// リファラの設定(show_profile.phpの存在を隠すため?)
header("Location: http://10.10.10.33/dashboard.php");
// 画面遷移の判定
if ($id_old == $id_new) {
// 自分のプロファイル
header("Location: profile_success.php");
} else {
// 他人のプロファイル
header("Location: profile_error.php");
}
?>
<?php
// セッションを開始
session_start();
// セッション変数からIDを取得
if(isset($_SESSION['user_id'])) {
$id = $_SESSION['user_id'];
// リファラをチェック
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
if($referer === 'http://10.10.10.33/dashboard.php') {
// セッション変数のIDに応じたプロファイルを表示
// 省略
}
}
?>
Network Discovery 10(正解者数 63)
あなたはクライアントに依頼されて リリース予定の Web サーバー「10.10.10.21」に問題がないか確認することになりました。
対象サーバーにインストールされている CMS のバージョンを特定し、解答してください。
解答形式:flag{..., ********: *****} (バージョン番号, リビジョン番号)
↓これが、当日、何をやってもダメだった原因。気付かなかった。
10.10.10.21 にアクセスしたらhxxp://schatzsuche.ctf/にリダイレクトしようとするので、10.10.10.21に対する攻撃は失敗する。
/etc/hostsを編集し、schatzsuche.ctfに対して攻撃すれば成功する。
/cmsadmin
/ftp/
の2つが見つかる
hxxp://schatzsuche.ctf/cmsadminにアクセスすると、
hxxp://schatzsuche.ctf/webEdition/にリダイレクトし、
ログイン画面が見える
hxxp://schatzsuche.ctf/ftp/にアクセスすると、
パストラバーサルで、IDとパスワードが見える
ログインすると、Preferences の System Informationに答えがあるらしいが、見せてもらえなかった。
あれ?見えた。
不安定だ。リダイレクトしない時もあったし。
5分ごとのリセットが原因?
Web Variation 20(正解者数 6)
hxxp://10.10.10.32 のWebサーバーで下記形式の XSS を発生させ、フラグを入手してください。
curl http://10.10.10.32/greet?name=%EF%B9%A4script%EF%B9%A5alert%281%29%EF%B9%A4%2Fscript%EF%B9%A5
WordPressで試したら、普通に < > はダメって怒られた。