Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
2024_01_21_大LT
Search
TotPro
May 29, 2024
28
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2024_01_21_大LT
2024/01/21に開催されたZli 大LTの登壇資料です
TotPro
May 29, 2024
More Decks by TotPro
See All by TotPro
2025_04_13_技術座談会
totpro
0
13
2024_10_19_大LT
totpro
0
26
2024_07_14_大LT
totpro
0
21
2024_05_11_大LT
totpro
0
25
Featured
See All Featured
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
410
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Prompt Engineering for Job Search
mfonobong
0
520
Chasing Engaging Ingredients in Design
codingconduct
0
360
Product Roadmaps are Hard
iamctodd
55
13k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
sira's awesome portfolio website redesign presentation
elsirapls
0
450
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Transcript
CTF(に)入門 (してみました) 総資産
自己紹介 • 名前:総資産 • 学年:学部3年 • 所属:(Zli) • 旧Twitter(X):@tot_pro_ •
ワインが好きです日本酒も飲みますビールも飲みますウィスキーも飲みますカクテ ルも飲みますお酒クソ雑魚です • 近況:梅酒とピーナッツチョコにはまってます • CTF歴:約3ヶ月(えっ?)
CTFって何? Capture The Flag の略で情報セキュリティ技術を競うハッキングコンテスト • クイズ形式で出題されるjeopardy形式や • ネットワーク内で擬似的な攻防戦を行うattack &
defense形式 など 他にも何種類か形式が存在する
もう少し具体的に • web (network) • cryptography • reversing • pwnable
• forensic • misc • osint • (programming) etc…
ここら辺を少々 • web (network) • cryptography • reversing • pwnable
• forensic • misc • osint • (programming) etc…
今日はwebとして出題された問題から一問だけご紹介 TSG CTF 2023 https://ctf.tsg.ne.jp/
配布されたファイルはこんな感じ #DANCE/ ├ scripts/ | ├ index.php | └ mypage.php
| └ docker-compose.yaml phpで書かれたwebサイトの攻略を してみましょう!らしい
やることその① 概要を把握します リンクを踏むと以下のような画面 → guestを押すと以下のような画面 ※問題サーバーが閉じてるのでローカルでやってます guestを押すと/mypage.phpにリダイレクトされるらしいです
リクエストとレスポンスのそれぞれの内容は以下の通り 今後の任意のリクエストには上のcookieも含まれる
ソースコードを見てみます まずはindex.phpのhtml部分 index.php guestボタンを押すと値が ”guest”であるauthが送られ るっぽいですね
index.phpのphp部分(の主要部分)、cookieの定義はここで auth→AES-128-GCM(Galois/Counter Mode)で暗号化されたauthの値 iv→暗号化の際に使用される初期ベクトル tag→認証で使用されるタグ(MACのようなもの) index.php
次はmypage.phpのphp部分(の主要部分)、$msgが表示される $auth == “admin”がtrueとなればflagが取得できそう mypage.php
やることその② 脆弱性を見つけよう あとはどうしたらmypage.phpで$auth == “admin”を真とできるのか考えます 時間がないので言っちゃいますがズバリこいつです mypage.phpでのcookieで送られてきたauthを復号する関数ですねこいつぁ 一見すると、え?何が問題なんですか?ってなりますね、なってください
こちら、phpドキュメントからの引用です tag AEAD 暗号モードの認証タグ。 正しくない場合、認証は失敗し、関数は false を返 します。 警告 tag
の長さをこの関数はチェックしません。 この値の長さは openssl_encrypt() を 呼び出した時に取得できるものと一致させなければならず、それは呼び出し側の責任で す。 一致しない場合でも、与えられた値が適切な tag の先頭部分と一致した場合に復 号が成功するかもしれません。 https://www.php.net/manual/ja/function.openssl-decrypt
つまり、tag = “abcdhogefuga123”でもtag = “a”で認証が通ってしまうんですね tagが1バイトの場合、候補は高々256通りなので総当たりしてしまえば良いわけです ダメ押しで、AES-GCMの性質上、暗号文から平文がいじれてしまうので簡単に ”guest” → ”admin”とできてしまいます
これで勝ち ちなみに encrypted_admin = “guest” xor “admin” xor encrypted_auth で入れ替えられます
やることその③ ソルバーを書きます warmup問題など比較的簡単な問題はソルバーを書かずに手でぽちぽちすればflagが 手に入りますが、基本的にはソルバーと呼ばれるコードを(任意の言語で)書きます みんなpythonで書いてるけど今回の問題に関してはphpで書いてる人がいました cryptoだとSageMath使ってる人もちらほらいます revとpwnは知らない子ですが、いずれやらねばならぬ
というわけで、私が他の つよつよな人たちを参考(パクっ て)にして書いたコードがこちら です solve.py
一応、 デモ的な
参考にしたところ • https://www.mbsd.jp/research/20200901/aes-gcm/ • 強い人たちのwriteupたくさん • https://www.php.net/manual/ja/
おわり • おすすめのワイン教えてください • おすすめのCTF教えてください ご清聴ありがとうございました