LoginSignup
1
0

More than 1 year has passed since last update.

dCTF 2021 writeup

Posted at

なんか書いてたんですが、少し放置していました。
供養します。

Misc

Encrypted the flag I have

画像からflagを読み取る問題。

括弧にあたる部分が左右で対応してそうだったのでSF的なアルファベットが由来かと推測。
「fictional alphabet」などと検索したところ、スターウォーズのアルファベットであることが判明。

認知度ォ

dctf)mastercodebreaker(

丸括弧、誤字じゃなかったです

Don't let it run

PDFに仕組まれたコードがヒント。
Acrobatで何が出来るか見てたらJavascriptとの項目があったのでチェック。
> すべてのJavascript のコードの中にflagを発見。

dctf{pdf_1nj3ct3d}

Powerpoint Programming

PowerPointで実装されたログイン画面を突破するためのパスワードがflag。
マクロではない。

ファイルを直接開かず、PowerPointから選択することで編集画面を見ることが出来る。
アニメーションタブを開くといっぱいアニメーションが設定されており、上から順番に辿ると DCTF と要素がハイライトされることからflagの文字列が読み取れるとわかる。
は要素の左側に表示されていることに注意。

DCTF{PPT_1SNT_V3RY_S3CUR3_1S_1T}

Show us your ID

PDFのオブジェクトについて知識があるといい世みたいな話があってバイナリエディタとウェブの記事とにらめっこしていたが、面倒臭くなってstringsでidっぽいものをエンコードしていったら見つかった。
バイナリが混ざってても割と読めるのでPDFと少し仲良くなれた。

dctf{3b0ba4}

Crypto

Julius' ancient script

シーザー暗号っぽかったが、通常のASCIIコードではうまくいかなかった気がする。
自分で文字の表を作ってうまく行けた感じのやつを提出。

dctf{th3_d13_h4s_b33n_c4st}

import os

with open(f'{os.path.dirname(__file__)}/flag.txt', 'r') as file:
    char_list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
    text = file.read()

    d = ord(text[0]) - ord('d')
    for char in text:
        if char in char_list:
            index = (char_list.index(char) - d) % len(char_list)
            print(char_list[index], end='')
        else:
            print(char, end='')

Web

Simple web

通常ではNot Authorizedとはじかれてしまうフォームからflagを手に入れる問題。

ソースコードを除くと hidden 属性が指定された要素があることがわかるので、開発者ツールで value=1 に書き換えた上でチェックボックスもマークし送信してflagをゲット。

dctf{w3b_c4n_b3_fun_r1ght?}

Very secure website

ハッシュ値で認証するログイン画面を突破する問題。

ユーザーネームはadminであったためハッシュ値は既知。
パスワードの方は暫くわからなかったが、ハッシュ値が数字で始まっていること、==の弱い比較で照合を行っていることから、暗黙の型変換を利用して突破するのでは??と当たりを付ける。
PHPでは(int) "10fugahoge" === 10なので。。。

自身で探索を試みたものの、終わらなさそうなので「php 0e」で調べたところ「Magic Hashes」という脆弱性であることが分かった。
0+e\d+ に該当する文字列同士の比較は 0の累乗(= 0) 同士として真と評価されるらしい。

該当する数値をパスワードとして送信してflagをゲット。

🧔🏻🔪 ==

dctf{It's_magic._I_ain't_gotta_explain_shit.}

参考: https://www.whitehatsec.com/blog/magic-hashes/

DevOps vs SecOps

他の問題のヒントを求めてdctf主催チームのGitHubを見たところ、DCTF-chall-devops-vs-secopsというリポジトリをたまたま発見。

CI/CDの話が合ったのでActionsの中を探したところ、「Create ctfd.yml」の中でflagが出力されていた。
ちなみに、challenge.ymlの中にflagsという項目があったが関係なかった。
つらい。

dctf{H3ll0_fr0m_1T_guy}

Welcome

Sanity Check

トップページに記載されている。
ユーザー登録の際に求められるのかと思ったが、問題として設定されている。

dctf{welc0m3_t0_dCTF}

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0