防衛省CTFで解けなかった問題を勉強した記録

防衛省CTFで解けなかった問題のうち、悔しいと思った問題のみ、他人のwriteupを参考に勉強した。

# Web Insecure 20 (正解者数 95)
あなたは社内ポータルサイト(hxxp://10.10.10.33)の管理者に依頼されて、profile ページが安全に保護されているかチェックすることになりました。 以下のログイン情報を用いてサイトにログインし、管理者の profile ページに記載されている秘密の情報を見つけてください。 なお、依頼の際に「管理者ページのidは0だよ」というヒントをもらっています。

【ログイン情報】

User: testUser
Password: diejuthdkfi14

Webアプリケーション脆弱性診断士の講座では、「許可制御の不備・欠落」という診断項目。
解かなければいけない問題。

Burpで挑む

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1163572/71a02a7d-6d9c-d1ec-16a1-0062f52125ef.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1163572/d11faa27-4e98-dff8-a2dd-dd4c201fd66b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1163572/24e4801d-e84b-ea37-9c26-3ab6439acd58.png)

HTTP History を確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1163572/139aa2c6-1cce-b65f-1fd8-f336d0f3ff8f.png)

Repeaterで
/show_profile.php?id=1
を
/show_profile.php?id=0
に変更してみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1163572/415600d5-721c-5d1d-ab5a-82575227eb6e.png)

profile_error.phpにリダイレクトされる。
profile_error.phpをブラウザで確認すると、他人のデータを覗くなと怒られる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1163572/110bfd86-2a37-7b47-6838-f630b9820490.png)

が、そこから無理に Repeater で profile_success.php にアクセスすると

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1163572/46b0793a-13d4-164a-0846-6a3a117a93e0.png)

フラグが見える

ソースコードは、こんな感じかな？

```php:show_profile.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:profile_success.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{*.*.*.*, ********: *****} (バージョン番号, リビジョン番号)

↓これが、当日、何をやってもダメだった原因。気付かなかった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1163572/70384446-159b-795e-a8ad-4a8aceeca8a1.png)

10.10.10.21 にアクセスしたらhxxp://schatzsuche.ctf/にリダイレクトしようとするので、10.10.10.21に対する攻撃は失敗する。

/etc/hostsを編集し、schatzsuche.ctfに対して攻撃すれば成功する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1163572/30500928-4f5f-2813-cac5-e76f9345b0c8.png)

/cmsadmin
/ftp/
の２つが見つかる

hxxp://schatzsuche.ctf/cmsadminにアクセスすると、
hxxp://schatzsuche.ctf/webEdition/にリダイレクトし、
ログイン画面が見える

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1163572/7f4a5aaf-4509-c295-5e81-7a4878388323.png)

hxxp://schatzsuche.ctf/ftp/にアクセスすると、
パストラバーサルで、IDとパスワードが見える

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1163572/fa343d66-0226-f7a7-2a84-8d94ed408f40.png)


ログインすると、Preferences の System Informationに答えがあるらしいが、見せてもらえなかった。

あれ？見えた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1163572/85074aaf-d22a-0ab1-0428-cab7f27a674d.png)

不安定だ。リダイレクトしない時もあったし。
5分ごとのリセットが原因？

# Web Variation 20（正解者数 6）
hxxp://10.10.10.32 のWebサーバーで下記形式の XSS を発生させ、フラグを入手してください。 <script>alert(1)</script>

```
curl http://10.10.10.32/greet?name=%EF%B9%A4script%EF%B9%A5alert%281%29%EF%B9%A4%2Fscript%EF%B9%A5
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1163572/1506a345-6c98-a94d-9ad9-672a6beae33d.png)

WordPressで試したら、普通に < > はダメって怒られた。