MBSD Cybersecurity Challenges 2023
2023 年 MBSD 网络安全挑战
この記事はIPFactory Advent Calendar 2023の20日目の記事です
本文适用于 20 年 IPFactory 降临日历的第 2023 天
その他の記事はこちら 在这里阅读更多文章
思い出したら都度色々書き足したりすると思います 如果我记得的话,我想我每次都会添加各种东西
備忘録的なものだと思ってください 把它想象成一份备忘录
作ったツール 制造的工具
こういうの見るとテンション上がるよね 当我看到这样的事情时,我很兴奋。
チーム紹介など 团队介绍等
こんにちは。情報科学専門学校1年のhatomatoです。
你好。 我是蕴本,信息科学学院的一年级学生。
IPFactoryの1年4人でMBSD Cybersecurity Challenges 2023に参加しました。
来自 IPFactory 的四名一年级学生参加了 2023 年 MBSD 网络安全挑战赛。
チーム名はdelikitchupです。 团队名称是 Delikitchup。
前回先輩(私が入学した際には既にOB)が優勝していたり、そもそもIPFactoryという名前が大きすぎて背負えないという気持ちがあり、sangoの独断でdelikitchupになりました。
上一次我是大四学生(入学时已经是校友)赢了,我觉得IPFactory这个名字太大了,一开始就不能带,我决定由sango自行决定。由来はよくわかりません。 我不确定它是从哪里来的。
過去ログ漁ってたらありました。 我过去在钓原木。
ketchupとdelicious合わせて 与番茄酱结合,味道鲜美
delikitchup(デリキチャップ) 德利克彻普
将来技術力挙げてIPFactoryとして出たいですね。
将来,我想利用我的技术技能作为IPFactory。
この記事は丁寧語だったりそうじゃなかったりします。
这篇文章可能是礼貌的,也可能是不礼貌的。
人はなぜか記事をふざけて書いてしまう…これトリビアになりませんか?
出于某种原因,人们开玩笑地写文章…… 这不是琐事吗?
メンバーは以下の通りです (ここにQiitaアカウント?)
成员如下(Qiita账号在这里? )
- hatomato 鸠本
- Chisenon 奇塞农
- sango 三哥
- ERUTONE 埃鲁通
開催概要に関しては公式ページをご参照ください。 有关活动的概述,请参阅官方页面。
1次審査通過したチームと最終審査の結果 通过初审的团队和终审结果
競技内容
脆弱性診断をする前段階で診断の規模を把握できるようなクローラーを作る
创建一个爬网程序,在进行漏洞评估之前可以掌握诊断的规模。
スケジュール 附表
- チームエントリー受付・課題配布 接受团队参赛作品和分配任务
- 2023年7月19日(水)~ 11月13日(月)
- 説明資料・巡回ツール提出期限 提交解释性材料和巡逻工具的截止日期
- 2023年11月13日(月)
- 一次審査結果発表 一次审査结果発表
- 2023年11月20日(月)
- 性能審査 性能审査
- 2023年11月27日(月)~ 12月1日(金)
- 最終審査会(オフライン開催) 最终评审(线下举行)
- 2023年12月15日(金)
エントリーから提出期限までは4カ月。最終審査会まで含めると5カ月間と長期間でした。
从报名到提交截止日期需要四个月的时间。 算上最终的评审,整整5个月。
1次審査 競技概要 1次审査竞技概要
Webアプリの全容がわかるようなクローラーを作成する
创建一个爬网程序,使你能够全面了解你的 Web 应用
ツール・ソースコード・インストール手順書や操作説明書を提出
提交工具、源代码、安装步骤和操作手册
操作説明書は開発エンジニアが操作する前提で書くこと
操作手册的编写应假设开发工程师将对其进行操作。
作成したツールの優位性などを示すこと 展示所创建工具的优越性等。
性能審査 競技概要 性能审査竞技概要
クラウド環境上に用意された本番サイトにMBSD{hogehoge}のようなflagがあり、その検出率で評価
在云环境中准备的生产站点上有一个标志,例如MBSD{hogehoge},并通过检测率进行评估。
運営が指定したドメイン以外にアクセスすると減点 如果您访问的域不是管理层指定的域,则将被扣除积分。
運営がアクセスを禁止したページにアクセスすると減点
如果您访问了管理层禁止访问的页面,则将扣除积分。
ツールで取得できたflagのみ出力すること 仅输出工具可获取的标志。
1次審査で提出したソースコードの改変は可能(改変した場合は再度提出する)
可以修改第一次筛选中提交的源代码(如果修改,将重新提交)。
診断結果は運営が指定したフォーマットで出力すること
诊断结果必须以管理层指定的格式输出。
最終審査会 最终审査会
オフラインで東京の会場で発表 在东京会场进行线下演示
スライドを作り、性能審査などを踏まえたプレゼンをする
根据表演筛选等制作幻灯片和演示文稿。
開始前 开始前
専門学校に入学してから 进入专门学校后
MBSDCCとはあまり関係がないので興味なければ飛ばしてください
它与 MBSDCC 没有太大关系,所以如果您不感兴趣,请跳过它
人を集める 将人们聚集在一起
(先輩かChisenonに言われて?)コンテストについて知り、基本情報取った後のタスクとしてちょうどいいかなと思い参加を決めました。
(由前辈或Chisenon告诉? 当我了解到比赛时,我决定参加,因为我认为在掌握基本信息后这将是一项很好的任务。
正直MBSDCCのことはよくわかっていませんでしたがなんとかなるだろうの精神で動きました。
老实说,我对MBSDCC了解不多,但我怀着能够管理它的精神而感动。
記事執筆時点も大した技術力もなく行動力だけで生きています。
在写这篇文章的时候,我没有太多的技术能力,我只靠我的演技生活。
IPFactoryに入るような人ならある程度やる気があるだろうという読みで同じクラスのIPFactoryの1年3人を誘いました。なんかいっぱいいて助かりました。
我读到愿意加入IPFactory的人会在某种程度上受到激励,所以我邀请了IPFactory的三名一年级学生在同一个班级。 他们有很多,这很有帮助。
(上級生とやるのもいい経験になるとは思いますが、)当時は(今も)無知なので、言われるがままやることになると思ったので1年生だけにしました。
我当时是无知的(现在仍然是),所以我想我会按照我的吩咐去做,所以我决定和一年级学生在一起。
(先輩の手柄ででかい顔したくないので…でもsangoの功績ででかい顔はします)
(我不想拿前辈的功劳做大脸…… 但是由于Sango的成就,我的脸很大。
作成したdiscordを見ると5月中旬だったので恐らく5月頭には人を集めていたと思います。
当我查看我创建的 Discord 时,当时是 5 月中旬,所以我认为它可能在 5 月初聚集了人们。
とりあえずCybersecurity Challengesなので徳丸本と脆弱性診断スタートガイドやることを決めました。
目前,这是网络安全挑战,所以我决定做 Tokumaru 和漏洞评估入门指南。
使用したツール 使用的工具
- Discord: 不和:
- 連絡ツールとして使用 用作联络工具
VCを使ったミーティングの実施、タスクの連絡、分報(times)を用意
使用 VC 召开会议、传达任务并准备会议记录报告(时间)
- 連絡ツールとして使用 用作联络工具
- Git,GitHub: Git,GitHub:
- 鬼門、こいつに2週間は持っていかれたし、未だにわからない
妖门,这家伙带了我两个星期,我还不知道 - あとcopilotは神 学生なら無料で使えるので使おう
此外,副驾驶对神学院学生是免费的,所以让我们使用它。
- 鬼門、こいつに2週間は持っていかれたし、未だにわからない
- VScode: VS代码:
- 最強 最强
- 色々な診断ツール 各种诊断工具
- これらを見てどんな機能が欲しいかを話し合った 我们研究了这些,并讨论了我们想要哪些功能
作業開始 作业开始
エントリーから 从入口
なにもわからん。 我什么都不懂。
本当に何もわかりませんでした。 我真的什么都不懂。
概要見てもなにを求められているのかわからないんですよね。
即使你看一下概述,你也不知道需要什么。
とりあえず2021年が脆弱性診断ツールの作成で、期間も同じような感じだったので先輩の参加記を見ながらその用語集を作って基礎知識を学びました。
目前,2021年是漏洞评估工具的创建之年,期间也差不多,所以我一边看前辈的参与笔记,一边做了一个术语表,学习了基础知识。
あれ(よーでんのブログ)や、それ(アルゴリズム弱太郎)やそこにあるリンクを見ていました。
我正在看那个(Yoden 的博客)和它(Algorithm Weaktaro)以及那里的链接。
(そもそも参加記がIPFactoryしかない…なくない?プレゼン資料等は多少あるんですけどね)
(首先,只有IPFactory…… 不是没了吗? 有一些介绍材料等)
エントリーから1週間後くらいにOBの先輩とお話したのですがそもそも僕らは2021年の記事を見て完全に脆弱性診断をやるつもりでいたので、クローラーだけと知って計画を立て直すことになりました。
在条目发布大约一周后,我与一位资深校友进行了交谈,由于我们在 2021 年看到了这篇文章,并且打算进行全面的漏洞评估,因此当我们发现它只是爬虫时,我们决定重新计划。
おかげで脆弱性診断スタートガイドは今積んでいます。
多亏了您,《漏洞评估入门指南》现已加载。
コンテストの公式ページ見ただけじゃ何言ってるかわからない、そんなレベルでした。
我不知道他们只是通过查看比赛的官方页面在说什么。
恐らくこの辺りで1次通過が目標になりました。 可能这个区域的第一次传球就成了目标。
技術選定 技术选定
とりあえず形にすることが目標だったのでpythonで書くことを決めました。
我的目标是暂时让它成型,所以我决定用 Python 编写它。
先輩の返答からあまりいい選択でないことはわかっていましたが、僕とERUTONEは本当にプログラミングしたことのない初心者だったので仕方のない選択でした。先輩の記事からGoも考えましたがAtcoderをpythonでやっていたのと基本情報B問題がpythonに近かったのでpythonにしました。次は別の言語習得してやります。
我从学长的回答中知道这不是一个非常好的选择,但 ERUTONE 和我是从未真正编程过的初学者,所以这是一个不可避免的选择。 我从前辈的文章中想到了 Go,但我决定使用 python,因为我在 python 中做 Atcoder,并且基本信息 B 问题接近 python。 下次,我会学习另一种语言。
スケジュールを決める 确定时间表
先輩の記事を見るとガントチャートがあって、これ進研ゼミでやったとこだ!ってなっていたのですが、そもそも僕らはなにをすればいいかわからないのでスケジュールの決めようがありませんでした。
如果你看一位前辈的文章,就会发现有一个甘特图,这就是我在Shinken研讨会上所做的! 但是我们一开始不知道该做什么,所以我们无法决定时间表。
なので見つけたこと、やらないといけなそうなことを書き出して都度やる形をとりました。
所以我写下了我的发现和我认为我必须做的事情,并且每次都做了。
のちの文を見るとわかるのですが継ぎ足し秘伝のたれ形式で要件が増えていきました。
从后面的句子中可以看出,要求以添加的秘密酱汁的形式增加。
とりあえずクローリングの試作機を作ろうという形になった気がする。
目前,我觉得决定制作爬行的原型。
~8月
まずクローラーの試作機を作ろうとしたらコードの書き方がわかりませんでした。
首先,当我尝试制作爬虫的原型时,我不知道如何编写代码。
初心者がAtcoderだけでツールがわかるわけがなかった。
初学者无法仅使用 Atcoder 来理解该工具。
requestsやbeautifulsoupの記事を見ていたが仕組みがわからずなにも手が動かない僕に対しsango,chisenonはどんどん理解を深めていっていて圧倒的な力の差を感じた。
我正在看关于请求和美汤的文章,但我不知道它是如何工作的,我无法动手,但Sango和Chisenon越来越加深我的理解,我感到力量的压倒性差异。
ここでsangoにコードを書いてもらって徐々にプログラミングについて理解していきました。
在这里,我让Sango编写代码,并逐渐了解了编程。
やりながらこんな機能あったらいいよね、と要件を固めてを繰り返す感じで。
在做的时候,我觉得有这样的功能就好了,我固化了要求并重复了一遍。
この辺りでGitHubに苦しめられていました。 我在这里被GitHub折磨着。
9月
8月中には誰がどの役割になるか自然と決まってきており、それぞれが進めていました。
到8月底,决定谁将扮演哪个角色是很自然的,他们每个人都在进行。
役割としては 这些角色包括:
- hatomato:
- プロジェクトを管理。streamlitでフロントを作るもsangoに遠回しに自分で全部書いたほうが早いと言われ以後ほぼ雑用に回る。
管理项目。 我用 Streamlit 做了一个幌子,但 Sango 告诉我,自己以迂回的方式写所有东西会更快,从那时起,我大部分时间都在做家务。
- プロジェクトを管理。streamlitでフロントを作るもsangoに遠回しに自分で全部書いたほうが早いと言われ以後ほぼ雑用に回る。
- Chisenon: 基塞农:
- 幅広い知見があったので普段からとりあえず彼に相談している。tagの取得機能を作成。
由于他的知识面很广,我通常会暂时向他咨询。 创建标签获取函数。
- 幅広い知見があったので普段からとりあえず彼に相談している。tagの取得機能を作成。
- sango: 桑戈:
- ほぼすべてのコードを書く、僕はコードを見てもどういう構造かわからないが動いているので良し。
我写了几乎所有的代码,当我看代码时我不知道它是什么样的结构,但它很好,因为它正在工作。
- ほぼすべてのコードを書く、僕はコードを見てもどういう構造かわからないが動いているので良し。
- ERUTONE: 埃鲁通:
- 学校のPCを借りてサーバー立ててもらっていたのだが使う機会がなかった。予備選力がいるというのは精神的な安定にはなったが余っていてちょっともったいなかった。CSV出力を作成。
我借了一台学校的电脑,并设置了一台服务器,但我没有机会使用它。 举行初选的事实是一种心理稳定,但这有点浪费,因为有盈余。 创建 CSV 输出。
- 学校のPCを借りてサーバー立ててもらっていたのだが使う機会がなかった。予備選力がいるというのは精神的な安定にはなったが余っていてちょっともったいなかった。CSV出力を作成。
9月後半くらいから自分がセキュリティミニキャンプうんぬんで追われていたり、そもそもクローラーがいい感じになってきた満足感等で全然進まなくなりました。
从9月下半月开始,我一直在一个安全迷你营地里追逐自己,我一直对爬虫一开始就变得更好感到满意,所以我根本没有进步。
人は長期間モチベーションを保つことができない。 人们不能长时间保持动力。
10月
10月後半くらいまで1カ月間くらいほぼ進捗がなく、各々好きなことをやっていましたがそろそろやんなきゃなーとなって再開。
直到10月下半月,大约一个月几乎没有任何进展,我们都在做自己喜欢的事情,但我们决定是时候这样做了,于是重新开始。
この時点でクローラーとしてある程度使えるものができていたので欲しい機能をガンガン追加していくことに。
在这一点上,我有一些东西可以在某种程度上用作爬虫,所以我决定添加我想要的功能。
11月
なんかもう2週間しかなくてやばくね?となり速度が一気に上がり、今まで放置していた改善案などをどんどん実装していきました。
才两周,不是吗? 结果,速度一下子提高了,我们实施了越来越多直到现在都被忽视的改进建议。
前々日と前日にかなり作業して最終日の朝まで作業していました。
我在前一天和前一天做了相当多的工作,直到最后一天的早上。
性能検査
フラグをどれだけ早く多く”ツールを使って”とってこれるかのテストでした。
这是对检索尽可能多的标志的速度和“使用”的测试。
(手動でとれたフラッグをツールでとったように見せかけるとかなり減点貰いそう)
(如果你假装你拿了一面用工具手动拍摄的旗帜,你会得到很多分数。
踏んじゃいけないリンク踏んで、ツールの出力ミスっておそらく20個くらいあるフラグのうち8個取れたはずが4個しか出力できませんでした。(本番蓋開けてみたら3つでした)
我踩到了一个我不应该踩到的链接,该工具的输出错误可能是我应该取 20 个左右标志中的 8 个,但我只能输出 4 个。 (当我打开作品的盖子时,有三个)
あと出力の形式も間違えてました。 此外,输出的格式错误。
時間も点数に考慮されるんですが約8時間時間いっぱい使いました。
分数中也考虑了时间,但我花了大约 8 个小时。
完全に時間配分をミスりました。 我完全错误地分配了我的时间。
へこみすぎてそこから1週間くらいはMBSDCCの作業(スライド資料作成など)をしませんでした。
它是如此凹陷,以至于在那之后大约一周内我没有做任何 MBSDCC 工作(例如,创建幻灯片)。
最終発表 最终発表
行ってみたら1番目の発表でした。 当我去那里时,这是第一个公告。
早めに終わらせないとご飯喉通らなかったので1番目でよかったです。
我很高兴我是第一个,因为我无法吃完这顿饭,所以我不得不早点吃完。
性能審査が終わっていてぶっちぎりのドベだと思っていたのですが意外とほかのチームもフラグを取れていなくて安心しました。難しすぎです。
我以为绩效考核已经结束,这是一记耳光,但其他团队没有接过旗帜,我松了一口气。 这太难了。
30個強フラグがあって一番とれていたチームが10個だったので相当難しかったです。
有30多面旗帜,得到最好的团队是10面,所以难度相当大。
性能審査でへこみすぎてスライドまともに作らず発表の点は一番低かったですが収穫は大きかったです。ちゃんとやればもう少し伸びたかな
我没有正确制作幻灯片,因为它们在绩效评估中凹陷太多,演示分数最低,但收获很大。 如果我做得好,我本可以成长得更多。
(踏んじゃいけないURL:marketAdminは10チーム中8チーム踏んでいたそうなのですが、今回は報告しなければ減点にならないとのことでした、よかった)
(网址:marketAdmin说10个队伍中有8个踩在身上,但这次他们说不举报就不扣分,好在)
ちなみに全員いるにもかかわらず発表の際、前に2人しか出なかったのは僕らだけでした、写真のことを何も考えていない。
顺便说一句,在宣布时,我们是唯一的两个人,尽管每个人都在那里,我们根本没有考虑这张照片。
他の発表を見ていてDB使えばよかったなと思いました。
看看其他的演示文稿,我想我应该使用DB。
僕らのツールは回すたびに前のデータを上書きするので前のクロール状況が分かりませんでした。
我们的工具在每次翻转时都会覆盖之前的数据,因此我们不知道之前的抓取状态。
そのせいで最大8個取れていたフラグを3個に減らしてしまいました。
因此,我将标志的数量从最多 8 个减少到 3 个。
DB参照すれば何度でも条件を変えてサーチできますからね。
如果引用数据库,则可以使用不同的条件进行多次搜索。
意外とpythonで書いているチームが多かったです。
令人惊讶的是,许多团队都是用 Python 编写的。
次はpython使わないとは思いますが意外とやれるんだなと思いました。
我不认为我下次会使用 Python,但我认为我可以出乎意料地做到这一点。
終わってから審査員の方がどういう要素をサイトに入れて嫌がらせしたかを嬉々として語ってくれました。
比赛结束后,评委们兴高采烈地谈论着他们在网站上放了什么元素,并骚扰了他们。
解散になってからもずっと審査員で反省をしているし、趣味:パソコン のオタク精神に心打たれました。
即使在解散之后,作为评委,我一直在反思它,我被我的爱好:计算机的极客精神所震撼。
ちなみに結果としては8位でした 顺便说一句,结果是第 8 名
今回一番重視したと語られていたのはログインができるかどうかで、ほかのチームもそこに詰まっていました。
这次最重要的是能够登录,其他团队都卡在那里。
indexからログインフォームに行くか飛ばされるのですが、ログイン状態だとindexがmainページになります。indexのページ内容がログインのセッション持っているかどうかで(多分)変わるので、seleniumとかで動かしている場合セッションIDまわりどうにかしないとそもそもツールを使用してサイトに入れないということが起きます。
从索引中,您可以转到登录表单或跳过,但如果您已登录,则索引将是主页。 索引页面的内容(可能)会根据您是否有登录会话而变化,因此,如果您使用 selenium 或其他东西运行它,则必须对会话 ID 执行某些操作,否则您将无法首先使用该工具进入站点。僕は実装してないのでどうやったかは知りませんが…sango、記事書いてくれ
我还没有实现它,所以我不知道我是怎么做到的…… Sango,给我写一篇文章
僕らはその実装に5時間かけました。 我们花了五个小时来实现它。
感想(+雑記) 感想(+雑记)
性能審査は大失敗したが、1年生の時にやってよかったなというのが正直な気持ちです。
绩效评估是一个很大的失败,但说实话,我很高兴我在一年级的时候就做到了。
セキュリティミニキャンプ参加もそうでしたが1年目でやるべきですね、ダメでも「まあ1年目だし…」というマインドでいられます。
就像参加安全迷你营一样,你应该在第一年就去做,即使你不去做,你也可以保持“嗯,这是第一年……”的心态。
MBSDCCがなかったら1年の間にGitHubは触らなかったかもしれないし、GitHubがわからないことを理由にセキュリティミニキャンプに参加しなかったかもしれない。
如果不是MBSDCC,我可能在一年内都不会碰到GitHub,我可能不会参加安全迷你营,因为我不了解GitHub。
(やり方があっているかはわからないが)チーム開発の経験を積めたのが何よりも大きいと思います。
我不知道这是否是正确的方法,但我认为最重要的是我能够获得团队发展的经验。
ちなみに僕らのMBSDCCの開発リポジトリは一度もmergeしたことないのでconflictの心配がないです。
顺便说一句,我们的 MBSDCC 开发存储库从未合并过,因此我们不必担心冲突。
branchは6つあるしなんかいろいろファイルやbranchが複製されてます、怖いね。
有6个分支,各种文件和分支重复,很吓人。
MBSDCC参加にあたってよく勉強するというか学校に残るようになりました。
当我加入MBSDCC时,我学习了很多东西,或者更确切地说,我留在了学校。
なんか最近は週4で8時までくらいまで残るようになりました。先輩は10時くらいまで残ったりしてます、怖いね
最近,我每周4天都呆到8点左右。 老年人一直待到10点左右,很吓人
今回は自分がリーダーだったので技術力がほぼなくてもやっていけたが今後絶対に誰かの下で動くことがあるだろうしその時どうするんでしょうか。
这一次,我是领导者,所以我几乎不需要任何技术技能就可以过得去,但将来我肯定会在别人手下工作,那我该怎么办?
自分は誰かに何かを強制されるのが嫌いというか自分の思い通りにいかないのが嫌なので、どうにかいい雰囲気のところでやるかいい雰囲気を作るかになるんですかね。そうすると結局リーダーみたいになりそうだけど。
我不喜欢被别人强迫做某事,或者我不喜欢事情不如我所愿,所以我想要么是在良好的氛围中做,要么是创造良好的氛围。 如果你这样做,你最终会成为一个领导者。
先輩の参加記を見ながら書いているのですがWebhookとか使ってみればよかったなとも思ってます。
我在写这篇文章时正在查看我的前辈的参与笔记,但我也认为我应该使用 webhook。
まあ当時はそんな余裕はありませんでした。 好吧,我当时负担不起。
最初は必要なことだけやるのが精いっぱいで気づいたら終わってました。
起初,我只忙着做我需要做的事情,不知不觉就结束了。
11月頭から加速度的に実装スピードが上がりましたがそれはそれまで、1週間単位でほぼ進捗がなくてつまんね~~と言いながら作業したりした結果がやっと出たのかなという気持ちです。
从11月初开始,实施速度加快了,但在此之前,每周几乎没有任何进展,感觉边说无聊~~边工作的结果终于出来了。
とてもいい経験でした 这是一次非常好的经历
参加メンバー、相談に乗ってくれた先輩、居残りの際にお世話になった先生、主催のMBSD等の方々、ありがとうございました!
感谢参与的成员,感谢向我咨询的前辈,感谢我离开时照顾我的老师,感谢MBSD的组织者!
原文始发于@hatomato:MBSD Cybersecurity Challenges 2023 参加記