Skip to content

Commit

Permalink
Merge pull request #25 from kstm-su/add-kobo-fes-ctf-blog
Browse files Browse the repository at this point in the history
光芒祭CTFの回答・解説と導線を追加
  • Loading branch information
Uni8sai authored Oct 12, 2024
2 parents b1955f3 + c3dd772 commit 5efb3b1
Show file tree
Hide file tree
Showing 4 changed files with 180 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/.vuepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ export default defineUserConfig({
path: "/posts/",
children: [
"/posts/",
"/posts/20241012-ctf-answer",
"/posts/20240515-bbq",
"/posts/20231201-auto-build.md",
"/posts/geekhaku",
Expand Down
4 changes: 4 additions & 0 deletions src/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ tagline: kstmは信州大学工学部の情報系サークルです
footer: MIT Licensed | Copyright © 2021 kstm-su
---

::: tip 光芒祭CTF
[光芒祭CTFの回答・解説](/posts/20241012-ctf-answer.html)を掲載しました。
:::

::: tip blog
部員による記事を[blog](/posts/)にて不定期で更新しています。
:::
Expand Down
172 changes: 172 additions & 0 deletions src/posts/20241012-ctf-answer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
---
title: "kstm 光芒祭CTF 2024 回答速報"
date: 2024-10-12T16:00:00+09:00
---

# kstm 光芒祭CTF 2024 回答速報

本日は信州大学工学部光芒祭にお越しくださりありがとうございました。

この記事では、kstmの出展のCTFに登場した問題の一部について、簡単な解説をします。

## CTFとは?

CTFとは、Capture the Flagの頭文字を取った、セキュリティに関するゲームです。

kstmメンバー総出で隠したFlagを皆さんに回収していただきました。

## 問題解説

<!-- 修正があった場合はここに修正内容の概要掲載 -->

### Crypto Quiz

1. 現代暗号には、**共通鍵**暗号、**公開鍵**暗号がある。
2. 公開鍵暗号にて、公開するほうの鍵を**公開**鍵、公開しないほうの鍵を**秘密**鍵と呼ぶ。公開鍵暗号には、**RSA暗号****楕円曲線暗号**などがあり、**RSA暗号**は巨大な数の素因数分解が困難なことを安全性と根拠とした暗号化方式であり、**楕円曲線暗号**は、楕円曲線上の離散対数問題の困難性を安全性の根拠とする暗号である。
3. SSL/TLSやIPsecなどのセキュリティプロトコルで用いられる鍵交換では、**ハイブリッド暗号**を用いた鍵交換が利用されていたが、TLS**1.3**では、**ハイブリッド暗号**を用いた鍵交換は廃止され、鍵交換アルゴリズムは**DHE****ECDHE**に限定された。(後略)
4. AESは、**128**長のブロック暗号化方式であり、鍵長は全部で**3**つある。また、ブロック暗号の中では最も**安全**である。危殆化した共通鍵暗号の3DESを用いたSSL/TLS攻撃の一つとして、**SWEET32**があるが、この攻撃には最低でも**32**GBの暗号化データを単一のSSL/TLSセッションから取得する必要がある。

以下、総評です。

Crypto Quizは、暗号に関する知識を問う小問集合になります。本CTF参加者が簡単に点数を取れるようにサービス問題として作問しました。実際のCTFにはこのような問題はないと考えてください。参加者の皆さん、フラグを入手する快感は味わえましたか?

さて、各問の内容について軽く触れたいと思います。

問題1, 2は、現代暗号に関する基礎知識を問いた問題です。そのため、ググらなくてもわかる人はわかるはずです。

問題3, 4は、少し難度が高いものになり、セキュリティの知識が多少あっても即答が難しい問題になっています。ただし、ググればわかるものになります。問題4について調べるコツとして、"DES/3DES 脆弱性 32GB"と打つと[Ret Hat社のSWEEET32に関する記事](https://access.redhat.com/ja/articles/2607321 "SWEET32")がヒットすると思います。この記事を見ると、なんと見事に答えが見つかると思います。このSWEET32について詳しく説明しませんが、DES/3DESにはSWEET32という脆弱性があり、利用が推奨されていないこと覚えておきましょう。ちなみに、問題文の"危殆化"とは、以前は安全だったものの技術の進歩や時間の経過で安全ではなくなったことを言います。

### Hidden Developer's Message

kstm内にあるという設定の架空のチーム「ukkr」(うっかり)のホームページから開発者によるメッセージを探すという課題でした。

開発者ツールを使って、HTMLのコメント`<!-- -->`を探すとflagが得られるようになっていました。

### Shinshu

- 信州大学工学部が発足したのは1949年であるが、その前身である長野高等工業学校(後に長野工業専門学校と改称される)が設立したのは西暦何年か?

Wikipediaで信州大学工学部を調べると「長野工業専門学校 (旧制)」のページへ移動することができます。これで1943年とわかります。

現在の長野工業高等専門学校(長野高専)が検索にヒットしやすいという裏をかいた問題でした。

### Txt File

フラッグの存在はすぐに気づけたと思いますが、正しくフラッグを転記するのに苦戦したと思います。

ファイル名変更ツールを使って後ろの文字列だけをコピーすることで、フラッグを楽に得られました。

### File Camouflage

ファイル名の中に、Unicodeの文字方向に関する制御コード **RLO制御コード** を挿入することで、ファイル名を誤認させています。

今回は拡張子を`.go`に偽装していたため、内容はファイル名が改ざんされたことを嘆くプログラム言語Goによるソースコードにしておきました。

二回目に現れる`{`は、**右から読む場合の閉じ中カッコである**ので、その左にあるtの次は後ろから右に読み、`kstm{gabihotog.abichi}`が得られます。

- (参考)事例 [国内企業を標的としたウイルス感染調査を騙るウイルス添付メール、制御文字RLOを使った拡張子偽装を確認](https://blog.trendmicro.co.jp/archives/3555) トレンドマイクロセキュリティブログ

### Mountain

画像をGoogleレンズなどの画像検索ツールで調べると、この山は**函館山**とわかります。函館山の標高を調べると、334 mとわかります。

### Secret Button

開発者ツールでは、スタイルを変更することができます。

下の画像に示す`display: none;`をオフにするとボタンが現れるので、これをクリックすることで画面が遷移してflagを得ることができました。

なお、裏道として、formタグの設定を見ながら`curl`などのコマンドでPOSTでリクエストしてもflagを得ることができました。

### So Sweet!

得られる甘いお菓子の正体は**Cookie**(クッキー)でした。

開発者ツールのApplication欄からCookieを選択すると、回答らしき文字列が得られます。しかし、これはURIエンコードされており、そのまま回答することはできません。

Chromiumの機能を使ってURIデコードすると、きちんと`kstm{ }`の形式となります。

### Weak Password

この問題のユーザー名は`admin`、パスワードは`password`でした。こんなユーザー名・パスワードにしてはいけませんよ!

ちなみに、救済措置として、コメントでユーザー名・パスワードを書いていましたので、Hidden Developer's Messageの要領で解くことができました。

### Classical Cipher

**シーザー暗号**の問題でした。文字「p」が「k」となるようにシーザー暗号のルールでずらすと……

```
pxyr{Mfuud Kzssd Qzhpd}
kstm{Happy Funny Lucky}
```

が得られます。

### In File

答えはファイル内にあるそうなので、閲覧してみましょう。例えば、シェルを使う場合は次のようにして調べられました。

```bash
cd Desktop
cat infile | grep kstm
```

### In Image

画像データが途中で破損しており、ある程度のところから画像が壊れてしまっています。この破損部分を見に行くとflagが得られました。

実は画像ファイル内にflagをべた書きしていたので、回答を得るコマンドはIn Fileのものと同じです。


### Conan FILE1096 Cipher

**名探偵コナン FILE1096**に登場した**レールフェンス暗号**の問題でした。暗号の長さは20文字であり、`kstm{`が得られそうなレーン数・配置であたりを付けるだけで解くことができます。

```
k { s I A
s m T i i K T H R }
t h s A A
kstm{ThisisKITAHARA}
```

裏道として解析ツールを使う方法もありました(ヒント冊子に解析ツールが端末に用意されていることだけ案内していました)。ツールは `/home/ukkr/ctf-tools/rail-fence.py` に配置してありました。

### Gray Scale

ヒトの色覚特性とコンピュータが扱う赤・緑・青の強弱は必ずしも対応しません。クロード・モネの作品「印象・日の出」は真っ赤に描かれた明るい太陽が特徴的ですが、単に赤・緑・青の強弱の平均を取るだけでは空の色に埋もれてしまいます。

ヒトの色覚特性に近い係数比として(0.7, 0.1, 0.2)が知られており、今回はこの付近の回答がすべて正解となっていました。

### Funny Rowlet

実は、問題文のURLのうち「funny-」部分を消してアクセスすると、X(旧Twitter)の投稿が見られました。この投稿のALTに回答がすべて書いてあります。

### Inverse Element

- 15x ≡ 1 (mod 143)を満たすxを求めよ。
- 回答: 124なので`kstm{124}`

### Public-key Crypto

RSA暗号を求める計算式を順に解くことで得られます。

- p = 271、q = 241、e = 7のときm = 38をRSA暗号で暗号化せよ。
- 正解: 50065なので、`kstm{50065}`

### Researcher

GeoGuesserの日本マップの要領で場所、高校名を調べます。

次に、得られた情報について検索することになります。しかし、Web検索エンジンを使っても、欲しい情報から離れた情報が多く、回答に近づくことは難しかったのではないでしょうか。

研究者の検索に特化した検索システムを使うことで、回答にぐっと近づくことができます。信州大学であれば「信州大学学術情報オンラインシステムSOAR」がより信州大学の教員に特化していて良いでしょう。

なお、市名まで絞り込むことができていれば、じゅうぶん総当たり可能な件数になりました。

## 感想

- 暗号クイズをたくさん解いてくれて作成者冥利に尽きる。(Uni8sai, Crypto Quizの作者・解説者)
- 我々にとっては初めての試みであったので、開催してみて問題がやや難しめの調整だと気づいた。来年以降もCTFが開催出来たら面白いと思うので、今年の成果を参考によりよい出展にできたらと思う。(高原のな, 光芒祭CTFの発案者・Crypto Quiz以外の解説者)
3 changes: 3 additions & 0 deletions src/posts/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# Home
サークルメンバーによるblogです。

## 光芒祭CTF 解説
[2024](/posts/20241012-ctf-answer.html)

## アドベントカレンダー
Qiitaにて行った過去のアドベントカレンダーをまとめています。

Expand Down

0 comments on commit 5efb3b1

Please sign in to comment.