なんか書いてたんですが、少し放置していました。
供養します。
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}