{"id":48365582,"url":"https://github.com/diver-osint-ctf/writeups","last_synced_at":"2026-04-05T14:05:21.650Z","repository":{"id":244677201,"uuid":"815935006","full_name":"diver-osint-ctf/writeups","owner":"diver-osint-ctf","description":"Official Writeups for DIVER OSINT CTF","archived":false,"fork":false,"pushed_at":"2026-01-25T08:06:08.000Z","size":89443,"stargazers_count":45,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-25T21:51:27.079Z","etag":null,"topics":["ctf","osint","security","writeups"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/diver-osint-ctf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-06-16T15:22:26.000Z","updated_at":"2026-01-25T14:32:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"0c90842f-e4ca-47b8-8dc9-80d775cea786","html_url":"https://github.com/diver-osint-ctf/writeups","commit_stats":null,"previous_names":["diver-osint-ctf/writeups"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/diver-osint-ctf/writeups","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diver-osint-ctf%2Fwriteups","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diver-osint-ctf%2Fwriteups/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diver-osint-ctf%2Fwriteups/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diver-osint-ctf%2Fwriteups/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/diver-osint-ctf","download_url":"https://codeload.github.com/diver-osint-ctf/writeups/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diver-osint-ctf%2Fwriteups/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31437928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T13:13:19.330Z","status":"ssl_error","status_checked_at":"2026-04-05T13:13:17.778Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ctf","osint","security","writeups"],"created_at":"2026-04-05T14:05:21.118Z","updated_at":"2026-04-05T14:05:21.642Z","avatar_url":"https://github.com/diver-osint-ctf.png","language":null,"readme":"# DIVER OSINT CTF 公式 Writeups\n\n- [DIVER OSINT CTF の目標](#diver-osint-ctf-の目標)\n- [SWIMMER OSINT CTF の目標](#swimmer-osint-ctf-の目標)\n\n## Writeups\n\n- [DIVER OSINT CTF 2024](./diver2024)\n- [DIVER OSINT CTF 2025](./diver2025)\n- [SWIMMER OSINT CTF 2026](./swimmer2026)\n\n## DIVER OSINT CTF の目標\n\nDIVER OSINT CTF を実施するに当たって、運営チームは大きく 3 つの目標を設定しています。\n\n### 「OSINT」の本来の意味を考え、可能な限り問題に反映すること\n\nOpen Source Intelligence の元来意味するところは「合法的に入手できる公開情報を調査・集積したうえで分析し、意思決定に繋げること」と言えるでしょう。\n\nOSINT は諜報から始まり、その手法が今では調査報道・ファクトチェックやサイバーセキュリティにまで活用されています。\n\n他方で、昨今の世界情勢やソーシャルメディアの発達と共に、OSINT というワードが有名になる一方、定義から乖離して「画像から場所を特定する GeoGuessr みたいなやつ」「SNS をネットストーキングするやつ」「なんか戦地の情報をリアルタイムで伝えてくれるやつ」といったキャッチーな存在として一人歩きしている感は否めません。\n\nそこで、本 CTF では OSINT の限られた側面に着目するのではなく、 **公開情報に基づいた調査・分析** という本義に従って、様々な分野や手法をカバーしようと考えています。\n\n今回、OSINT CTF に頻出の SNS やジオロケーションに限らず、軍事や公的データの参照、歴史調査などをカバーしたのはこのためです。\n\nこれらを通じて、未知の対象に触れる際に既存の知識だけではなく、分野や手法そのものに関する公開情報を調査して対応するプロセスも包含することを目指します。また次を開催する機会があれば、今回カバーできなかった分野の OSINT も取り入れていきたいと考えています。\n\n### 現実世界指向にすること\n\nOSINT CTF は「没入感のあるゲーム」の一種として成立させることも可能ですが、本 CTF ではプレイヤーがゲームとして理解するのではなく「現実の情報を調査しているのだ」という実感を持てるように、そして実際にそうであるように心がけています。\n\nこれは OSINT のスキルは決してゲームの能力ではなく、現実世界に適用可能であり、それは時にパワフルで危険なものになりうることを（作問者を含めて）皆が意識するためです。\n\nまた、現実に Bellingcat などに代表されるアナリストやグループが OSINT を行っている場面と、「CTF の OSINT」が乖離しているという現状があり、難しいかもしれませんが、少しでもこの隙間を埋めたいと考えています。\n\nもちろん、個人のプライバシーの問題などもあり、すべての問題を現実世界のデータとすることはできません。そのようなケースでも、ある程度実在しそうな状態を想定して作問しています。\n\n### 参加者に何か成果やノウハウを持ち帰ってもらうこと\n\n運営チームの各メンバーも OSINT CTF プレイヤーです。プレイヤーとして、解きながら（あるいは解けなくても writeup を見ることで）新たな知識やアイデアを手に入れ、それを次に活かしてきた経験があります。\n\nDIVER OSINT CTF では、参加してくださるプレイヤーの皆さんにこの経験をしていただきたいと考え、問題を解く経験から、他の OSINT CTF や実社会で活かせるノウハウを得られるようにしたいと考えています。\n\n特に、開催前に Discord でお尋ねした限りでは、OSINT CTF への参加が初めてという方も多くいらっしゃいました。そのため、他の OSINT CTF でも見られる問題スタイル・要素も一部に取り入れ、そういった方々が別のイベントでも活躍できるようになることを一つの目的として掲げています。\n\n## 作問に関する方針\n\n作問における目標は以下の通りです。\n\n### レベルを幅広く設定する\n\nOSINT CTF 初心者でも解答できる問題から、上級者にしか解答できないであろう問題まで幅広く揃えるように心がけています。\n\n初心者向けとしては introduction カテゴリを設け、OSINT CTF でよく見られる手法（Google Lens、データベースサイトの調査、ファイルに残された痕跡の確認、ジオロケーションなど）によるものを盛り込み、他の OSINT CTF に取り組む際に応用できるスキルを身につけてもらおうと考えています。\n\nまた、国内外からトップレベルの実力を誇る OSINT CTF プレイヤーの参加が想定されることから、上級者向け問題もなるべく多く用意するようにしました。こちらは解答に際して緻密な調査が必要なものを出題の軸としています。\n\n### 可能な限り国際的にする\n\n広く世界から参加者が集まることを前提とし、可能な限り特定の言語に依拠しない問題を作成することを目標としました。しかし、これはすべて英語で作問するという意味ではありません。\n\nOSINT では外国語の情報を精査するケースも多く、語学力や翻訳ツール、辞書などを用いて言語バリアを突破することもスキルの一部です。\n\nそのため、「全参加者に平等に言語バリアを設ける」という考えを採っています。たとえば、ある問題で日本語母語話者が有利になってしまう場合、他言語の母語話者が有利になる問題も作ることで全体でのバランスを取ります。\n\nただし、これが十分に達成されなかった側面は否定しません。なぜなら、問題や Flag の妥当性を担保するため、現地での調査が必要になる問題も多いからです。そのため、問題の舞台が日本に偏ってしまった傾向は否めませんが、すべての問題が機械翻訳ツール経由で解答可能であるように工夫しています。\n\n次回以降はさらに「平等な言語バリア」の取り組みを加速できればと考えています。\n\n### 現実で有用なツールや手法へ誘導する\n\n「現実世界指向」は解法にも適用される、つまり、問題の解答に使用するツールはなるべく現実の課題に対しても使用されるものであるべきと考えています。本 CTF の理念においては、CTF 特有のツールや手法が使用されることをなるべく避けるべきです。\n\n残念ながら、問題や Flag として成立させるために、手法自体が現実離れしたものになるケースは時折発生してしまいます。それでも、Flag に至るまでに現実の調査で必要な手順やツールを挟むように配慮しています。\n\n### 不快になりうる問題も含む\n\n特に調査報道やファクトチェックに際して、心地よい情報ばかりを目にするわけではありません。時には、ショッキングな画像・映像、大量のフェイク情報、過激な陰謀論などと向き合う必要が生じることがあります。\n\n本 CTF では現実世界での情報を調査するという前提に立ち、問題の候補としてこれらが登場した場合には「参加者が不快になるかもしれない」という理由で排除することは行っていません。\n\nもちろん、このようなコンテンツに触れたくない参加者がいることも理解しています。そのため、ルールにも明記した上で、ショッキングなコンテンツに関しては content warning を追加するようにしました。これは海外 OSINT CTF の取り組みを参考にしています。\n\n### 結果が「冪等」であるようにする\n\n昨今は ChatGPT や Gemini に代表される LLM など、利用者ごと、あるいは試行ごとに結果が変わるツールも増えています。  \nこれらをプレイヤーが活用することは問題ありませんが、競技としての公平性を担保するため、このようなツールによる結果を唯一の解答ルートとすることは避けています。\n\nまた、競技中に複数のプレイヤーが試行の過程で入力・操作することによって、値や表示が変わってしまう（タイミングによって不公平になってしまう）ツールや環境の使用も可能な限り避けるようにしています。\n\n### 整合性がある別解は正解とする\n\nOSINT CTF の宿命として、作問者が想定していないが問題文の条件を満たす Flag、いわゆる別解が存在する可能性が常にあります。\n\n作問やレビューの段階で入念に調査しているつもりですが、それでも別解が存在する可能性を排除できない場合には「この問題に関して、この条件を満たすものが提示された場合は Flag を修正して別解を受け入れる」という条件を各問題に付与しています。\n\nもちろん、別解ではないかと問い合わせがあったものの、妥当ではない場合については Flag を追加しません。\n\n## 作問に関する倫理的規範\n\n以下は倫理的規範として遵守するようにしました。\n\n- 解答者に違法行為を行わせない。また、違法行為を行う必要があるように誤認させる問題を作らない。\n- 実在の人物や企業に脅威を与えるものにならない。\n  - 深掘りする場合、国家や公共性の高い組織や団体を対象とする。\n  - 人物を対象とする場合、広く報道済みの事象を用いるか、架空の人物を仕立てる。\n    - これは「現実世界指向」には反するかもしれませんが、安全を最優先しました。\n- ショッキングな情報に触れる問題には content warning を明示する。\n  - Flag までの過程で災害、事故、事件、怪我、遺体などを必ず目にするであろう問題に際して実施しています。\n\n\n## SWIMMER OSINT CTF の目標\n\nDIVER OSINT CTFは初心者から上級者までカバーするという趣旨でスタートしました。しかし、2024年・2025年の開催を経て、「難易度がeasyと設定されている問題でも、初心者には難しすぎる」というご意見を多くいただきました。\n\nまた、国内には初心者が完走できる難易度でOSINTに特化したCTFが2025年時点で存在していないこともあり、より広く多くの人にOSINT CTFという競技へ参加していただく機会が必要であるとも感じていました。\n\nそこで、難易度を大きく下げ、初心者向けに特化した「SWIMMER OSINT CTF」を開催することにしました。\n\nDIVER OSINT CTFが「現実世界指向」を掲げ、OSINTの実務につながるような問題も扱う一方で、SWIMMER OSINT CTFでは日常生活で役立つ分野を中心に扱っています。\n例えば、2026年のSWIMMERでは、AI生成されたフェイク画像を判別する問題や、SNSやファイルから意図せず個人情報が漏洩してしまう問題などを取り上げています。\n\nこれは参加者のみなさんが、日常で偽情報に接したときに自力で検証するノウハウを得ることや、「攻め」の目線を持つことで個人情報や機密を守れるようになることを目的としています。\n\nSWIMMER OSNT CTFに参加してくださった皆さんは一定の競技OSINT経験を既に得ています。これを糧にして、次のステップとしてぜひDIVER OSINT CTFにも参加してみてください。","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiver-osint-ctf%2Fwriteups","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiver-osint-ctf%2Fwriteups","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiver-osint-ctf%2Fwriteups/lists"}