webページの更新を通知するbotを作った

webページの更新を通知するbotを作りました.

先日,某コミュニティサイトを利用することになったんですが(mixiみたいなイメージのサイト),更新(他のひとの書き込みとか)を通知する機能が無かったんです.定期的に手動でログインして・・・ていうのはしんどいので,解決するためbotを作成しました.

あと研究室の先輩が過去にbot開発していたのもあって,自分も卒業までにやっとこうかなと.

概要

コードはこちら

github.com

名前はhubota(ひゅぼた)です.

hubot製のbotです.

定期的にWebページを見に行って,前回から変化していれば通知を送ります.特徴は以下の通り.

特徴

ログインが必要なサイトに対応

対象がコミュニティサイトなので,ログイン処理をしてから目的のページへアクセスに行きます.

むしろログインが不要な場合は想定していません.

目的ページの要素を指定できる

HTMLの要素に付けられたidを指定して,その部分だけ比較します.ログイン回数とか含まれてると,毎回内容が変わってしまうので,この機能を付けています.

こちらも全体を比較したいっていうケースはまだ非対応です.

さらにオプションで,その中の特定のclassについては確認対象から除外することができます.

間隔を指定できる

cronと同じ形式で確認間隔・時間を指定できます.

その他

ajax使って表示する中身を取ってくるようなサイトには非対応です.

botですが,現状は会話機能とか一切ないです.そのうち付けたい.

現状IFTTTを使って,更新をお知らせするようになっています.IFTTTを選んだのはLINEへ通知が送れるからです.ユーザ数が多いという点でLINEは圧倒的ですよね.

IFTTTとの連携についてはこちらの記事で書きました.よろしければご覧ください.

自作のアプリからIFTTTを通じてLINEにメッセージを送る方法 - mbuchiのブログ

ただ上の記事を書いてから数日後にIFTTTがリニューアルしてて,現状のとはデザインが違ったりしてます.悲しい.

おわりに

webページの更新を通知するbotを作りました.私の環境では,IFTTTからLINEに通知を送るようにしています.

設定ファイルの書き換えだけでいろいろなサイトに対応させれるよう,出来る限りしたつもりです.

Node.jsを書いたのは初めてなので,色々ツッコミどころがあるかと思います.よろしければコメント,issueなどいただけると勉強になります.

こんな機能があると良いといったことも大歓迎です(実装するとは言ってない.)

参考にしたサイト

自作のアプリからIFTTTを通じてLINEにメッセージを送る方法

botや監視アプリを作ってて,通知を投げたいときってあると思います.

そんなときにIFTTTを使って幸せになろうという話です.

IFTTTとは

以下のサイトが公式ページです.

ifttt.com

ざっくり言うと,何かのイベントが起こった時,それを指定したものに通知するためのサービスです. 例えば"毎朝6時に","LINEに天気を送る"とかいったことが簡単にできます.

細かいことはググってください.

他にも似たサービスはあるんですが,LINEにメッセージを送れるということで今回これを選びました.

手順

今回は自作アプリが"IFTTTのAPIを叩く"と,"LINEにメッセージが送られる"というレシピを作ります.

1. IFTTTに登録

登録してください.

2. IFTTTから今回使うレシピを作成

メッセージを送る条件のことを,IFTTTではレシピと呼びます.

ログインした後,My Recipes -> Create a Recipes と進みます.

レシピ作成画面が出るので,"this"のところをクリックし, "Maker" を選択します.

f:id:mbuchi:20161102094200p:plain

トリガにReceive a web requestを選択し,

f:id:mbuchi:20161102094552p:plain

イベント名を付け,Create a Triggerで完了されます.

f:id:mbuchi:20161102094531p:plain

次に"that"を設定していきます.

今回は"line"を選びます.

f:id:mbuchi:20161102095012p:plain

アクションを選択し,メッセージの中身を作成します. メッセージを送る先(グループか,自分かを選べます)を選択し,送るメッセージの雛形を作成します.

現段階では値を3つまで送れるようです.

f:id:mbuchi:20161102095346p:plain

これでレシピは完成となります."Create Recipe"で完了させます.

f:id:mbuchi:20161102095630p:plain

以下のようにレシピが作成されました.

f:id:mbuchi:20161102095808p:plain

3. IFTTTでLINEの設定を行う

右上のChannelsから一覧を表示し,LINEを選択します.

Connectをクリックすると,LINEのアカウントが求められます.IDとパスワードを入れてログインしてください.

f:id:mbuchi:20161102100053p:plain

4. makerのキーを確認する

同様に右上のChannelsから一覧を表示し,Makerを選択します.

あるいは以下のURLにアクセスします.

https://ifttt.com/maker

f:id:mbuchi:20161102100529p:plain

そうすると,APIを叩くのに必要なkeyが表示されます.

"Connected as"などの青文字をクリックすると,説明が表示されます.

f:id:mbuchi:20161102100915p:plain

{event}に先程作成したイベント名を入力し,{value1: □}に好きな文字を入力してTest Itをクリックすれば,試す事ができます.

getでもいけるっていうのがありがたいですよね.

自作アプリからgetで叩く場合は,

https://maker.ifttt.com/trigger/{event}/with/key/{key}?value1={value1}&value2={value2}&value3={value3}

とすれば大丈夫です.

ただしURIエンコードをお忘れなく.

まとめ

自作アプリからIFTTTを使ってLINEにメッセージを飛ばす方法を説明しました.

LINEに通知が送れるのは,家族向けなど技術系以外の人も混ざっているときなどに非常にありがたいですね.

自分がハマったのは

  • 自作アプリからIFTTTを利用する方法
  • リクエストを送る際のkeyはどこで確認できるのか

の2点でした.

説明が無くて詰まってる箇所とかありましたら,ぜひ追記していきたいと思っているのでコメントください.

航空自衛隊 幹部候補生 飛行要員 3次試験を受けてきました

先日,航空自衛隊 幹部候補生 飛行要員の3次試験を受けてきました.実際に飛行機を操縦しての適性試験という珍しい体験をしたので,試験のざっくりとしたことを書きます.

自衛隊の試験を受けることを検討している方は,これを読むより先に地元の自衛隊地方協力本部の方にお話を聞いてください.

実際に受ける可能性が出ている方,あるいは単に興味を持っている方を対象として書いたつもりです.

そもそもなぜ受けたのか

もともと自衛隊に興味があったとか,パイロット志望だったとか,そういったことは全くありません.

受験のきっかけは,大学に自衛隊の広報官の方がいらっしゃっていたことです.情報セキュリティの分野で就職先を探していたんですが,自衛隊出身の方にその分野で活躍されている方がちょくちょくいらっしゃったことを思い出して,興味を持つようになりました.

その後,飛行要員とそれ以外の受験を併願できることや,パイロットが飛べなくなった場合には希望の分野に行きやすいということを聞き,飛行要員も受けようかとなりました.

航空自衛隊 一般幹部候補生 飛行要員とは

幹部自衛官の中でも,航空自衛隊パイロット候補を採用する区分です.

一般幹部候補生の場合,院卒と大卒で分かれており,さらにそれぞれ一般要員と飛行要員に分かれます.その計4つの区分を,3つまで併願が可能です.

3次試験までの道程

細かい内容はうろ覚えなので,間違っていたらすみません.

1次試験

各県にある自衛隊で受験します.

筆記試験,飛行適性検査があります.筆記試験1日+飛行適性試験が半日です.

筆記試験は5教科(マーク)+自分の専攻(記述)です.内容については正直それほど難しいものではありません.

飛行適性検査は,航空機からみた風景写真から,その飛行機の体勢などを選択肢から選ぶといった問題が出されます.

2次試験

奈良県幹部候補生学校で受けました.

面接,作文,健康診断でした.1日で朝から夕方まで行われます.

作文は800文字くらいだったと思います.2つのテーマから1つを選びます.1つはニュースとかをみてれば書けそうなもの,もう一つはある程度法律などの知識が必要なものでした.

面接は3:1の個人面接で,30分程度でした.志望理由の他に集団生活は大丈夫かとか人をまとめた経験について聞かれました.その他,普段から運動しているかといったことも聞かれました.

健康診断は,視野とか今まで計測したことのない物もあって面白かったです.

待ち時間が数時間あったので,暇つぶし出来るようなものが必要です.

3次試験の日程

日程は5~8日間かけて行われます.日数にばらつきがある理由は,天候によっては飛行検査が実施出来ないためです.

1日目

昼ごろに航空自衛隊の飛行場に集められます.

  • 試験の概要説明
  • 飛行服や靴の配布
  • 面接の準備

2日目

  • 飛行検査 前準備

3~8日目

  • 飛行検査
  • 医学検査
  • 面接

試験の概要

試験では大体以下の内容があります.

  • 飛行検査
  • 医学検査
  • 面接

試験の内容を順に説明します.

飛行検査

試験のメイン(と私が勝手に思ってる)です.実際に飛行機に乗って,操縦を行います.

使う飛行機はT7という二人乗りのもので,練習機といわれる種類のものだそうです.

https://upload.wikimedia.org/wikipedia/commons/5/57/T-7.JPEG

4回飛行して適性を見る試験になります.

左右への旋回や,水平からの下降,上昇からの水平などが課題として出されます.

飛行の適正って何?

具体的な評価基準は不明です.

ただ水平線を基準として,機体の状態(機首の上下,左右の傾きなど)を水平線などの景色で把握するようにとはよく言われました. 自分は外を見ようと意識してても,つい計器を凝視してしまってました.

教官がおっしゃるには.計器はあくまで確認のために使うので,一瞬だけ見てその残像で判断するそうです.

飛行検査 前準備

操縦の仕方や試験の内容について,DVDや,教官の方がスライトを使って説明されます.また操縦の仕方を書かれた冊子が渡されますので,それを読んで勉強します.

また操縦席の実寸台の模型があり,それを使って操縦桿を動かして練習することが出来ます.

医学検査

脳波,心電図,色覚,網膜,問診くらいだったと思います.

個人的には脳波が鬼門です.薄暗い部屋で横になって,目を閉じて20分弱そのままいるというものでした.

この検査の何が辛いって,寝てはいけないことです(もし寝た場合はやり直し).飛行試験の隙間に医学検査は差し込まれるので,人によっては飛行して疲れて昼食を取った後,脳波検査という流れになります.

脳波を取る方が寝そうになったら声をかけてくれて(脳波みたら寝そうかどうか判るらしい),どうにか1回で取れました.

面接

2:1の個人面接で30分程度行われました.若い幹部自衛官の方もいて,ラフな感じの面接でした.

自衛隊の志望度とか,パイロットを志望した理由とか聞かれました.

面接 前準備

面接の材料として(?),以下の2つを作成しました.

  • プロフィールシートのようなものの作成

    プロフィールシートでは,小学校から現在までの学校,そこでの活動(部活,委員会など),そのころ努力していたことなどについてでした. その他,履歴書にあるような項目についても聞かれました.

  • 単語に続けて,文章を作るもの(十数程度)

数十字程度の短い文章を書きます.十数問あったと思いますが,1問1分強くらいの時間しか与えられません.

面接で,書いた内容について「こういった文章を書いてるけど,こういう考え方をするの?」というような性格を見るような感じで使っていました.

営内の環境

飛行学校から出られません.また学校内の自由な行動は出来ず,移動の際は常に自衛官の方が付き添います.ただ不定期に売店に立ち寄ったりもさせていただけるため,それほど不便はありません.

洗濯機や乾燥機は無料で使えますが,台数は少なかったので必ず使えるとは限りません.下着などの着替えは数日分あったほうがいいと思います.

お風呂は大浴場でサウナもありました.シャンブーなどは無いので,各自で持っていく必要があります.

土日は7時起床,平日は6時起床です.いつも10時過ぎに起きている人間には辛いです.各部屋にエアコンがあり動いていますが,消灯後は止まります(うわさでは,試験があるからエアコンを動かしているが,通常今の時期はつかないとか).扇風機もありました.

受験して

飛行機は暑いと聞いていましたが,飛んでいる時は飛行機のエアコンも動くためそれほどでもありませんでした.ただエンジンを動かすまではエアコンが動かないので,地上では暑かったです.あとパラシュートとか非常用の装具が全部で20kg以上あって非常に重い.今回乗ったT7という練習機は射出式のシートでは無いため,非常時に脱出する際は自力で操縦席から出て,翼に移動して飛び降りてもらいますって言われて真顔になった.いままでそうなった例は無いそうですが.

飛行機の操縦自体は,丁寧に教えていただけたり学習の時間を十分にとられていたため,思ってたよりもどうにかなりました.

場合によっては検査の待ち時間が長くなるので,本とか持って行っててもいいかもしれません.

飛行検査が全て終わってから,各自のスマホとかカメラを使って飛行機の前とかで写真を取ってくれました.デジカメを持って行っておけば良かった(´・ω・`).飛行機の乗り降りなどを手伝ってくださる方にカメラなどを預けることになるので,カメラを持っていく場合はポケットに入るサイズで.

感想

一言でいうと,貴重な体験が出来たので受験して正解でした.

自分の普段いる環境とは全く違った体験だったため,とても面白かったです.厳しい規律や上下関係といったものは大学生活やアキュトラスでは無縁のため,違う世界を見ることが出来ました.チャイム代わりのラッパがなった時,それまで座って話をされていた自衛官の方々が,急に立ち上がり国旗のある方角を向いて直立されていたのが印象的です.

飛行試験はとにかく楽しかったです.旅客機に乗ったことはありますが,今回の飛行機は小さく旋回するので雲の立体感(?)が凄い感じれます.飛行試験が終わってから,アクロバット飛行も少しやっていただき,内臓が引っ張られる感覚も初めて体感しました.

あと飛行要員の試験受験者ですが,飛行機マニアの方が多かったです.あとは民間のパイロットも併願してますとか,大学でグライダーに乗っていますとか.そのため他の人よりは飛行機大好き感が少なく,面接では少し珍しがられた感じがします.

自衛隊の試験内容についても,体力測定などが無かったり,実際に飛行しての適性検査をするといった点で驚きました. ただ体力測定が無いとしても,自分がお見かけした方はみなさん引き締まった体をされていたので,必然的に体は鍛えられるんだというのを目の当たりにしました.

営内で数日過ごさせていただいたことで,自衛隊の学校の雰囲気も少し見ることが出来ました.私が自衛隊の方に知り合いがいないため,現場を見て雰囲気を知ることが出来たという意味でもこの試験は良かったと思います.

今回の営内での雰囲気や現役自衛官の方からお話を伺ったことをまとめると,自衛官に向いている人は,ある程度の理不尽さに耐えれて,飲み会で盛り上がれて,つらい状況でも仲間がいれば大丈夫という人のようです.

逆に苦手な人は,集団生活が苦手で自分のペースを大切にする人という感じでしょうか.(違ってたらすみません)

国を守るって大変だなというのを実感した試験でした.

もし合格すれば,4月から候補生として幹部候補生学校に行った後,航空学校に行くことになります.飛行要員として学校を卒業できるのは2割ほどだそうです.あとは適性なしとして,通常の幹部になるとか.厳しい世界ですね.

まとまりのない文章になりましたが,とりあえず思いつくまま書きました.

お世話になった自衛官の皆様,ありがとうございました.

SECCON 2015 決勝大会 (intercollege)に参加してきました

SECCON 2015 決勝大会 (intercollege)に参加してきました. ざっくりと感想とか書きます.

参加したもの

2015.seccon.jp

これのintercollegeのほうに参加しました.

チームはAquariumです.

参加の経緯

AquariumはSECCON 2015 online CTFのオンライン予選を勝ち抜いて出場しました.

しかし私は予選の時チームメンバーではありませんでした.ですので予選のことは知りません.

先輩方のチームが決勝の出場権ゲットしたという話は聞いてたので,大会終わったら詳しいお話を聞きたいなとか思ってたら, 突如,その先輩から

もしよかったらSECCON決勝大会一緒に行きません〜?!

というチャットが来たって感じです.

一言で言うと棚ぼたです.

大会の情報

スケジュール

2016年1月30日(土)

  • 11:00 受付開始
  • 11:30 開会式・競技説明
  • 12:00 競技開始(4時間)
  • 16:00 競技終了・答えあわせ
  • 16:30 表彰式
  • 17:00 交流会

スケジュールには答え合わせってあったんですが,実際は無かったです.

競技形式

Attack&Defenseでした. 各チームにそれぞれ脆弱なサーバ(設定などは同一)が配布されて,そのサーバを攻撃するってものです.

攻撃ポイントと防御ポイントがあって,その合計点で競います. 攻撃ポイントは他チームのサーバからフラグを取得した際に得点,防御ポイントは指定されたサービスを稼働させ続けることで得点となります. 防御ポイントは運営さんが定期的にサービスの稼働状況を確認して,稼働してたら得点,してなかったら減点という仕組みです.

最初の15分はサービスを稼働させなくていい時間となっていました.

競技で出された各サービスについて

1 ブログ

運営お手製?のブログサービスです.

2 keiba

node.jsで動いているアプリでした. SQLインジェクションがあった.

3 sbox2015

コードをアップロードすると,実行して結果を返すサービス. クライアント用にUnityで作られたアプリがあった.

自分のしたこと,反省点など

準備物

WindowsのモバイルPC 1台

競技中にしてたこと

自分はkeibaを主に,時々sboxを見てどこか攻撃出来ないかなって探してました. keibaはSQLインジェクションできそうっていうのは分かったんですが,そこから攻撃につなげることが出来ませんでした. sboxはUnityのアプリの使い方がわからず,色々さわってみたけど諦めたって感じです. 得点につながるものを見つけることは何も出来ませんでした. 最後の方は,チームのデキる人が作ったツールが取ってきたフラグを,スコアサーバに投げたりしてました.

競技後の反省点

終わってみると,準備不足だったと感じます.一応仮想のLinux環境は用意してたんですが,マシンスペックが低くて動作が非常に重かったです. またインターネットと競技用のネットワークは同時に繋げないため,調べる為にネットワークを切り替えて,また競技ネットワークに繋いで競技サーバ入ってするのが面倒でした. 今思えばサーバを1台持ち込んで,そこから競技サーバへアクセスするようにすればよかったなと.そうすれば競技サーバにtmuxとかで繋ぎっぱなしにできるし.

競技中に特に辛かったのが,node.jsやUnityも触れた経験が無かったため,中身を把握しようとするのにかなり時間がかかってしまいました. 普段から様々な言語や環境に触れておく重要性を感じました.

普段のCTFに比べて時間も短く,緊張してしまったのは悔しいところです. keibaもSQLインジェクション出来そうって気づいた時,まず直すべきなのにどうやって攻撃を考えて試したりしていました.本当に何を考えていたのか...

あと自チームのサーバに来た攻撃のパケットを,キャプチャして他のチームのサーバにそのまま投げるとかすればよかったなと. 自分が攻撃される側でもあるっていうのをうまく使うべきでした.

もしまた参加するなら

ドットインストールの講座を一通り見て,いろんな言語やフレームワークなどを勉強. 持ち込む用のマシンを準備.yumリポジトリをそこにミラーしておいて,自チームのサーバからyumが使えるようにする.

その他

初めての会場参加型のCTFで,初めてのAttack&Defenseでした. 競技時間は4時間でしたが,競技をしているとあっという間でした. 自分の実力を知って若干落ち込みもしましたが,楽しかったですし,今後のモチベーションアップにも繋がるものでした.

懇親会でもインターンシップで知り合った方と再会したり企業の方のお話を聞いたりすることが出来ました.

運営の方々,スポンサー各社様,参加者の方々,あとチームのみなさん,ありがとうございました!

CentOS6.6にSnortをインストール

目的

CentOS6にSnortをインストールする必要があったため,調べました.

色々詰まったので,備忘録として書いておきます.

結局epelをリポジトリに追加して,インストールするようにしました.

手順

インストールするものは順に,libdnet(とlibnet-devel),daq,snortです.

yumリポジトリにepelを追加

epelからlibnetをとってくるため,その設定をします.

# wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
# rpm --import RPM-GPG-KEY-EPEL-6
# touch /etc/yum.repos.d/epel.repo

/etc/yum.repos.d/epel.repoを編集

# vi /etc/yum.repos.d/epel.repo

[epel]
name=EPEL RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/fedora/epel/6/$basearch/
gpgcheck=1
enabled=0

libdnet(とlibnet-devel),daq,snortをインストール

# yum install libnet-devel libdnet-devel --enablerepo=epel

# yum install -y  https://forensics.cert.org/centos/cert/6/x86_64/daq-2.0.6-1.el6.x86_64.rpm

# yum install -y https://forensics.cert.org/centos/cert/6/x86_64/snort-2.9.7.5-1.el6.x86_64.rpm

これでインストールは完了です.

実際に動くかはこれから調べます.(ごめんなさい)

参考

CentOSにyumリポジトリを追加 - Qiita

卒論のtexをmarkdownで書いた話

はじめに

卒論のtexmarkdownから変換して書きました. その時のやり方を,備忘録としてまとめました.

以前投稿しましたが,表示がおかしくなったので再投稿.

フォルダ構成

├─figure // 画像フォルダ 
└─style  // こっちで作業 texのスタイルファイルとかmarkdownファイルとか 

使ったプログラム

  • sublime text 2 エディタ
  • pandoc ドキュメント変換ツール markdownからtexへの変換に使用
  • pdfplatex texからPDFへの変換
  • bcc32 makefileを実行

前準備

texのソフトをインストールします.

簡単LaTeXインストールWindows編(2016年4月版)

TeXインストーラ 3

こちらのサイトを参考にさせていただきました.

markdownからtexへの変換

pandocを使いました.

pandoc thesis.md --chapters -s -o thesis.tex --template=template_thesis.latex 
  • –chapters

見出しレベルをchapterから始めます. (これがないと,sectionから始まります)

  • -s

ヘッダとフッタも含めたファイルを出力

  • -o

変換結果をファイルに出力

  • –template

テンプレート指定 これで,学校指定のヘッダやフッタをつける. デフォのテンプレートは-Dで出力.それを大学のに合わせて修正.

細々としたpandoc用のmarkdownの書き方

  • 見出しにラベルを付ける
# はじめに {#intro} 
\chapter{はじめに}\label{cp:intro} 
  • ヘッダ部分に内容を書く

yaml形式で,markdownファイルに書く.

--- 
title: 'これはタイトルです: コロンを含んでいます' 
... 
\title{$title$}

と書いておくと,$title$に展開される.

\title{'これはタイトルです: コロンを含んでいます'}

詳しくは,以下のリンクのYAMLメタデータブロックの項を参照

Pandoc ユーザーズガイド 日本語版 - Japanese Pandoc User's Association

\tightlistでエラーが出るので対応

以下のページの方法で対応しました.

Pandoc1.4以降でMarkdownをTexにするとエラーになる - Qiita

texからPDFへの変換

pdfplatexを使いました.

pdfplatex thesis.tex

makefileで変換を自動化

makefile書きました.bcc32を入れてたので,windowsでも動いてくれました.

pdfへの変換は,3回どおり実行.2回でもいいとか,3回必要とかいろいろ聞いたので,とりあえず3回. 目次とかで1回->2回めの変換でページ数が変わるときは3回,それ以外は2回変換する必要があるそうです.

PDFを開くのは,SumatraPDFを使いました.Adobeので開くと,ファイルロックするので,開いたまま実行すると失敗します.

# Makefile
thesis.pdf : thesis.tex *.sty ../figure/*.eps
        -rm thesis.aux thesis.dvi thesis.log thesis.out thesis.synctex.gz
        platex thesis.tex
        platex thesis.tex
        pdfplatex thesis.tex
        rm thesis.aux thesis.dvi thesis.log thesis.out thesis.synctex.gz
        -"C:\Program Files (x86)\SumatraPDF\SumatraPDF.exe" thesis.pdf 
thesis.tex : thesis.md template_thesis.latex
        pandoc thesis.md -s -o thesis.tex --template=template_thesis.latex 

makefilesublimeから実行

UserKeyBindingにmakefileを実行するものを追加

キーは ctrl + b にしました.

{ "keys": ["ctrl+b"], 
    "command": "exec", 
    "args": { 
        "cmd": "make" 
             }
} 

これで,ショートカットキーを押せば,自動でPDFまで変換してくれます.

まとめ

markdownで卒論を書こう!

mixi Scrap Challenge 参加報告

はじめに

2015.01.17(土)に東京で開催されたmixi Scrap Challengeに参加してきました.

その内容と感想などを,ざっと書きます.

参加を考えている方の参考になれば,幸いです.

Scrap Challengeとは

概要

mixiが年に3回程度開催している学生向けのセキュリティイベント.

予め脆弱性が作りこまれた,実際のmixiサイトにそっくりなページを攻撃する.

2~3人のグループで解き,グループごとの得点を競う.

問題が複数出題され,好きな順序で解く.

出題内容や範囲

各問では,与える被害とトリガとなる行動,取り出す情報等が指定される.

指定されたとおりの結果が出せれば正解となる.

どのページにどんな脆弱性があるかは問題内で教えられる.

出題範囲はXSS,CSRFSQLインジェクション,オープンリダイレクトだったかと.

選考

応募書類による審査の上,多数なら抽選. 20名程度に絞る.

参加費用の補助等

交通費片道分+昼夜2食

タイムスケジュール

  • 10:40 受付開始
  • 11:00-11:15 挨拶,環境(ネット,チャット)設定
  • 11:15-12:00 セキュリティ概論
  • 12:00-12:30 チュートリアル
  • 12:30-13:30 ランチ,休憩
  • 13:30-14:00 チーム作業準備
  • 14:00-16:30 攻略
  • 16:30-17:00 問題解説
  • 17:00-17:30 統括
  • 17:30-18:30 懇親会

セキュリティ概論

webページの脆弱性についての解説.

過去のmixiの事例(はまちちゃんperlコード流出など)も脆弱性の具体例として紹介.

また,脆弱性を作りこまない対策として,mixiでは機能要件を決めた段階,実装後の両方でレビューすることなどを説明.

チュートリアル

攻撃対象のサイトにXSSを行い,審判員の確認を受け,得点が加算されるまでの流れを確認した.

感想など

一言でいうと楽しかった!

CTFではXSSCSRFはやったことが無かったので,新鮮な体験でした.

セキュリティ概論もあり,脆弱性についても,より理解することが出来ました.

特に事例にあがった,残念な仕様は開発者自身では気付きにくいだろうと思いました.

自分では10問中1問しか解けなかったので,力不足を実感する結果となりました.

攻撃の知識+JS力が圧倒的に不足... とりあえず徳丸本で勉強します.

解き終わった後の解説は,とても勉強になりました. できれば,もう少しゆっくりと解説が聞きたかったです.

(セキュリティ概論を予習で済ます形に変更して,その分の時間を解説に充てるとか・・・)

終わった後の懇親会では,他の大学の人と話す貴重な機会が得られました.

他の参加者の人と話すと,自分の知識や経験が少ないことを実感させられます.

社員の方ともお話できて,自由な社風が伝わりました.特に,自己紹介で,もうすぐ転職しますという方がいらっしゃったのは衝撃.

あと,他大学の方とお話した中で,他大学では学部3年生でも就活モードと聞いて驚きでした. 修士1年に至っては,面接している人もざらとか.

私も来年は就活生となるので,早めに行動開始します!

参加しようか考えている人へ

動的webページ(特に投稿を受け付けるもの)を作ろうかと考えている人は,絶対おすすめ.

脆弱性の紹介だけでは危険性を実感できないので,攻撃を体験できる場を経験しておくと良いかと.

概論やチュートリアルは有りますが,事前知識が無いと少しキツイかも.

教育の場というよりは,腕試しの場または興味を深めるための場だと感じました.

冬の時期のは,特にB3とか修士1年の人は参加するといいかも.脆弱性の勉強に加え,就活が始まっていることが実感できます.

最後に

mixi Scrap Challengeは,XSS,CSRFが演習形式で勉強できる貴重な機会となりました.

mixiの皆様,このようなイベントを開催していただき,ありがとうございました.

おまけ

写真

昼食

釜飯でした.モンスト水も一緒にいただきました. f:id:mbuchi:20150120145244j:plain

懇親会

ビュッフェスタイル.

おしゃれなサンドイッチとか色々.

f:id:mbuchi:20150120145315j:plain

おみやげ

写真撮り忘れ(´・ω・`) 後でアップします