はじめに

この記事はhttps://adventar.org/calendars/10469 の7日目の記事です。

6日目はbataさん(bata_24)の「https://hackmd.io/@bata24/SJOzjzqQ1e」でした。私はgdb-peda派でしたが、数年近くメンテナンスがされていないこともありgefに乗り換えました。より正確には、bata24/gefです。bataさんが追加されたコマンドは、exploitを書き慣れている人には必須となる機能ばかりで、様々な場面で重宝しています。bataさんに投げ銭できるなら、間違いなく赤スパ投げていますね。なお、記事内で紹介されているコマンドの中で特に気になったのは「sixel-memory」コマンドです。いつか使ってみたいですね。

本題に入ります。会社チーム「ierae」としてAutomotive CTFに参加しました。今回は会社の枠を超えて、bataさん(bata_24)に超強力な助っ人として加わっていただきました。この場を借りて改めてお礼申し上げます。ご協力いただき、本当にありがとうございました!🙇

Automotive CTFは予選、日本決勝、世界決勝の3部構成で実施されました。予選はJeopardy形式のオンライン開催で、他に類を見ない2週間という長期開催でした。日本決勝では予選を突破した日本チーム同士が競い合い、世界決勝では日本決勝の勝者と予選の海外上位チームが対戦しました。世界決勝はアメリカのデトロイトで開催され、運営側が旅費を負担してくださいました。本当にありがとうございました🙏

ieraeは、予選1位🥇、日本決勝1位🥇、世界決勝2位🥈という成績を収めました。個人的にはトリプル1位での完全勝利を目指していましたが、世界決勝で優勝した「greaterthan」チームには大きな差をつけられました。2人だけの参加で圧倒的な成績を残しており、世界の壁の高さを感じました。来年また開催されるのであれば、必ずリベンジを果たしたいですね。

左: 世界決勝の表彰楯。金属製で重い。ちなにみ1位の楯は金色で派手派手、右: 日本決勝のもの。触ると指紋が目立つ

左: 世界決勝の表彰楯。金属製で重い。ちなにみ1位の楯は金色で派手派手、右: 日本決勝のもの。触ると指紋が目立つ

以上が、前書きです。この記事では、Automotive CTF世界決勝の問題解説(writeup)と旅行記です。

ここからwriteup

[World Finals] Rush Hour

前提として、RAMNについて簡単に説明します。RAMN(Resistant Automotive Miniature Network)は、4つの電子制御ユニット(ECU)で構成された、プリント基板のみで構成された小型のCAN/CAN-FDテストベッドです。決勝では、オンサイト向けの問題としてこのRAMNを使用した問題が多数出題されました。

RAMNはファームウェアなどが公開されています。詳細は、下記のリンクから参照ください。

さて、Rush Hourという問題もRAMNで動作している問題です。問題文は次の通りです。UDSを無効にする機能を追加したので、フラグを読めないとのことです。また問題文中の記載通りに、ファームウェアが添付されていました。