ちゃんゆーのブログ

思ったことや、技術系のメモなどを書き残していきます。

CyberRebeatCTFに参加したのでwrite-up

先日、SECCON Beginner Hiroshima に参加しまして、初めてCTFやってみたのですが、これが面白くってオンラインの大会に出てみたよ。という話です。 後輩のguriと出場しましたが、大半は彼が解いてくれました。すごい!

tl;dr

壊滅的でした。

Binary

SimpleBinary

SimpleBinaryファイルが配られる。 実行権限与えるも、

$ ./SimpleBinary

応答なし。 stringsかけてもヒントはなさそうだったので逆アセンブルかける。 それっぽい関数を見つけるも、そもそもアセンブリが読めず断念。

Binaryクリアするにはちゃんとアセンブリ読んで編集してってできないとダメだね。

crackme

未着手。

f31337

未着手。

Crypto

Rotation

P4P6S{9RN4RUNPXR45} を解読する。 ローテーションというからrot13だったり、いろんな文字数ズラすも解読できずパス。

FLAG.encrypted

未着手。

Signature

未着手。

Exercise

Exercise

CRCTF{CyberRebeatCTF}

Misc

Readme

f:id:chanyou0311:20180912101541j:plain が配布される。

どっかで見たことあると思ったらこれか。 www.ebook5.net

一旦パスしてあとで解こうと思ったらチームメンバーに解かれてました。

Opening Movie

url先の動画を300回再生しろという問題。 f:id:chanyou0311:20180912102012p:plain

startを押すと爆音でオープニングムービーが流れる。驚く。

動画再生中にstart押すと「Now Playing...」とalertかかって言うことを聞かない。

BeautifulSoupでスクレイピングしようかと思うも、これAjaxかなにかで動的に動画ファイル取得して埋め込んでいるから、BeautifulSoup使えないことが判明。 Selenium使ったことないけど1時間位格闘して諦めた。こりゃ悔しい。頑張って5回位手動でstart押したけど、悔しいこりゃ。

Programming

Calculation

ncコマンドで指定されたip叩くと計算式が返されるので答えていく。

$ nc 59.106.212.75 8080
69 - 98 + 34 - 65 - 88
0
Wrong!

これを30問くらい出題される。 Python演算子をパースして計算するスクリプト書いたものの、ncコマンドからパイプで値渡せるわけじゃないのね。 しょうがなくコピペでPythonに投げる。 コマンドに直接流し込めば計算もしてくれるが、 pyperclip モジュールを使えば、実行結果を自動的にクリップボードに保存するなんてこともできるので、ちょっとは楽になる。

github.com

後日談的な話ですが、Pythonでncコマンド叩けるスクリプトが公開されていました。

Python Netcat · GitHub

これ使えばよかった…

Prime Factor

Calculationと同様、ncコマンドで最大素因数を答える問題。 強引にPythonに投げましたが、単純なアルゴリズムだと桁数増えると計算に時間かかりすぎてしまうので、sympyを使う。

import sympy

def max_prime(n):
    return max(sympy.factorint(n).keys())

max_prime(542778378564)

ちなみに実行するときはローカルでもよかったけど、Colaboratoryを使った。

https://colab.research.google.com/

最初っから数学系のパッケージがインストールされているのでimportするだけでいいし、手軽にGPU使えるのでスクラッチするのに良いと思ってる。

Visual Novels

余裕があれば解こうと思ったが結局パスした。

Recon

Tweet

未着手。

CyberRebeatScripts

未着手。

ChangeHistory

これに一番時間をかけたかもしれない。そして解けなかった問題。 GitHubリポジトリ内にFLAGが隠されているらしい。

github.com

closedのissueを見ると、間違ってコミットしたとの記述があった。

f:id:chanyou0311:20180912141154p:plain

コミット番号が書いてあるものの、git logで見れるわけでもない。 メルカリのエンジニアブログの記事を参考に、commit番号生成のロジックを学ぶ。

tech.mercari.com

FLAGがどこに隠れているか、自分はコミットメッセージに含まれていると睨んだ(のが間違いだったか)。 ブルートフォースでコミット情報を復元できそうと思い、hashcat導入するも時間切れ。 hashcatも文字数が把握できてると効率よく当てれるらしいけど、今回は文字数不明だったのでうまくいかず、断念。

Stegano

Secret.pdf

f:id:chanyou0311:20180912142103p:plain

コピペ

Alpha

未着手

Last 5 boxes

未着手

Trivia

Monero

未着手

Crossword

未着手。

Web

White page

http://hidden-field.cyberrebeat.adctf.online/index.php
id:Hiro
password:LittleGarden

とのことだた入力フォームは表示されず。styleでhiddenがかかってるので、インスペクターから直接styleを修正してあげて入力する。

<form action="index.php" method="post">
   <input type="text" name="id" style="visibility:hidden">
   <input type="text" name="password" style="visibility:hidden">
   <button>LOGIN</button>
</form>

これ最初どうやっても解けんなと思ったら、問題文のidがHeroになってました。いつの間にか訂正されたみたいです。ヒーロー。

Let's Tweet!

ハッシュタグ付きでツイートしたURLを送るフォームがあり、送信するもdbの権限周りで弾かれ断念。

Uploader

未着手

あとがき

Beginnerあがりたてにはちょっと難しかった。ただ時間はあるので、じっくり調査できて勉強になりました。

WindowsマシンとLinuxマシンもちゃんと用意するべきでしたね…

あと、write-up書くときのために、逐一キャプチャしておけばよかったですね。 次回からはそうしよう。

お疲れ様でした。

おにぎりくんbotの誕生、繁栄、そして死 その2

この記事は呉高専エンジニア勉強会 Advent Calendar 2017 25日目の記事になります。

🍙🍙🍙🍙🍙🍙🍙🍙🍙🍙🍙🍙🍙🍙🍙🍙🍘🍙🍙🍙🍙

こんにちは、ちゃんゆーです。

AdventCalendarの1日目でおにぎりくんbotの誕生、繁栄、そして死という記事を書きましたが、その後日談です。

稼働後のおにぎりくん

おにぎりくん死亡

しばらく無事にTrelloの通知を送ってくれていましたが、ある時から通知が送られなくなってしまっていました。

f:id:chanyou0311:20180101093921p:plain

Herokuにデプロイしていたのですが、調べてみるとFreeの時間枠を消費しきっていたみたいです。

おにぎりくん復活

すぐにおにぎりくんAWSに移行しました。これで無事に通知してくれるようになりました。

f:id:chanyou0311:20180101094811p:plain

おにぎりくんゾンビ化

するとある時から二重で通知が!

f:id:chanyou0311:20180101101405p:plain

どうやら月が変わってHerokuの制限が解除されて、おにぎりくんが復活したようです。HerokuとAWSの二重稼働になってしまっていて、2回もダブって発言していたようです。

ゾンビとなったHerokuのonigiriを殺して、解決しました。

LINEからSlackへの移行

ところがどっこい、2017/11/17にSlackが日本語対応したとのことで、チームのやり取りもSlackへ移行しました。

jp.techcrunch.com

Trello関係はすべて Trello Alert におまかせすることにしたので、おにぎりくんの役目は終わったのでした。

ただせっかくなので、デプロイ完了通知のWebhookに登録して、今も別の形で生きてくれています。

f:id:chanyou0311:20180101120602p:plain

まとめ

ありがとうおにぎりくん

これからもよろしくね。

呉高専の専攻科に進学して半年経ったので振り返ってみる

これは呉高専エンジニア勉強会 Advent Calendar 2017の22日目の記事です。

こんにちは。呉高専の専攻科のちゃんゆーです。

専攻科に進学して半年経ったので、どんな感じのところなのかまとめたいと思います。

高専とは

そもそも呉高専についてざっとおさらい。高専自体の制度については割愛します。

学科

学科は以下のように分かれています。

僕は中学を卒業して電気情報工学科に入学し、その後専攻科に進学しました。 どうでもいいですが、工業高等専門学校だけど建築学科だけ工学じゃないんですよね。

その他特色

インキュベーションワーク

最近インキュベーションワークという、PDCA回すプロジェクト形式の授業が始まり、プロジェクトの活動がメディアに取り上げられることも増えてきました。

これまた新しい授業だけあって、賛否両論ありますが。学歴重視の業界に行く人にはこんなことやる暇があったら勉強して成績あげるわ、という人もちらほらいるようです。

専攻科とは

専攻科は2016年に改組され、カリキュラムが大きく変わりました。ざっくり言うと 本科で学んだ専門性を他領域に活かす勉強 をします。 先ほどのインキュベーションワークの延長のような、社会に出て働く上で必要な知識や経験則なんかが学べる環境を作ろうとしています。ただ主観だけど2017年現在は確実に学べる環境ではないように感じます。

見どころ

専攻科には以下のような、他ではみないような授業やカリキュラムがあります。

長期インターンシップでは、3ヶ月間企業に入り込み、実際に働く経験ができます。 他高専連携授業は、他の高専と連携して、プロジェクトマネジメント系の授業を受けます。

良い点

長期インターンシップがあること

やはりこれ。企業に3ヶ月間もずっと入り浸る経験はなかなかできません。都心部の大学では講義を受けながら空いた時間に出社するスタイルもあるようですが、週休2日、平日毎日入り込めるのはなかなかできない経験です。

働く前提の人は自分の就職したい分野の会社にインターンして、その内部事情を探ることができます。

研究したい人は企業ではなく研究所に行くこともできるようです。やりようによっては大学教授へのつながりも作れそうですね。

インターンしてきた会社が合わないなら合わないで、新卒カードを切る前によい判断材料がもらえたことになるのでいいなと。

時間がかなりある

特に専攻科の1年生のうちは時間がかなりあります。週休4日くらいです。

この間に研究に没頭することもできるし、個人でプロダクト作ることに時間を割くこともできます。僕は長期インターンに行った会社と、インターン後もリモートでアルバイトさせてもらっています。 技術力伸ばしながらいろんなことに手が出せて、のびのびできて幸せです。

逆にやりたいことが見つからないなら、将来どういった業界へ行くのが自分にとって良いか見つけるために時間を使えます。

自分で時間を有効に使える自信がないなら、専攻科の有り余る時間に困ってしまうかもしれないです。素直に就職するか大学進学するかしたほうが、適度に予定が埋まっていっていいのかな、とも思います。(それが本質だとは思わないけど)

悪い点

授業がまだ詰めきれていない

改組されて間もないので、ほとんどの授業は試行錯誤段階です。

見どころで触れた連携授業も、遠方の学校とインタラクティブにやり取りするわけではなく、単に動画を見ているような形で授業が進んでいきます。通信機器に不具合が発生して、授業中にわたわたする場面も少なくありません。

それからプロジェクトマネジメント系の授業も作り込まれておらず、「テキトーにやっちゃって」感が満載です。 まだ専攻科の1年目ですが、今の授業の内容がどういった場面で具体的にどう活かせるのか示されていないので「やったところで」感が強いです。授業内容のロードマップとかあれば学生も意図を見出しやすいんだろうけど、そういったものがなく、「やったほうがいいよね」という内容を点々と行っており、それらが面的に繋がる感じがしないです。ただこなしている感じ。

それから自分の専門領域の授業はほとんどありません。(週に1コマ程度) 専攻科の1年目なのでこのくらいの量なのかもしれません。

専門の授業がない代わりに、専門性を活かして他の専門の学生と協力する場面があるので、インプットするよりアウトプットする場面が多いと思います。 どんどん専門性高めたい人の多くには向いていないかもしれません。

環境が変わらない

専攻科に進学する人のほとんどが、本科からの進学になります。そのため、周囲の環境が変わらず刺激が少なくなりがちです。思考も凝り固まるようになったり、悩みを相談できる人がいないとハマったりするかもしれません。 積極的に外に出る(地域、学会、企業など)ことで、環境を変えないまま刺激的に日々過ごせるので、そういった生き方がおすすめです。

まとめ

改組して2年目の専攻科、僕の主観でまとめてみました。

後輩には、いろんな人から情報集めて、悔いのない選択をしてほしいものです。

Placeholdというダミー画像を生成してくれるサイトが便利

この記事は呉高専エンジニア勉強会 Advent Calendar 2017の13日目の記事です。

ここ最近は友人とメディアを立ち上げていて、そのフロントエンドをゴリゴリ書いています。

emacsについて書こうと思ったのですが、今回は記事書く時間がなかったので、便利なサービスを紹介します。ごめんなさい。

続きを読む

LINEとTrelloで手軽にタスク管理してみる

こんにちは。気づけばすっかり秋空。気持ちいいですー。

手軽さを重視して、LINEとTrelloでタスク管理する方法思いついたので試験的に導入してみることにしたのでそのまとめです。

背景

学生みんなSlackとか使わないんで、LINE+α的な感じでタスク管理できたらよいなと。

使うもの

  • LINE(要メールアドレス登録)
  • Trello
  • IFTTT

全体像

コミュニケーションはLINEで行う。

Trelloは進捗の確認、共有用。ほんとにボードのイメージ。

IFTTTはTrelloでカードが移動したことをLINEで通知するためのつなぎ。こうすることでTrelloをずっと監視しなくてもよくなる。今のLINEでやり取りするというスタイルを変えずに済む。うれしい。

設定手順

Trelloに登録してチームとボードとリストを作る

trello.com

ここから普通に登録する。Googleアカウントでログインもできるようです。

ボードリストが出てくるので「新しいチームを作成」からチームを作ります。

f:id:chanyou0311:20170927132601p:plain

「新しいボードを作成」からボードを作ります。

f:id:chanyou0311:20170927132653p:plain

こんな画面が出てくるかと。

f:id:chanyou0311:20170927132808p:plain

「リストを追加」リンクから必要なリストを追加します。

f:id:chanyou0311:20170927133134p:plain

こんなイメージです。

作業が完了したら右側の完了リストにカードを動かすという使い方。

IFTTTに登録してLINEとTrelloを連携させる

ifttt.com

初めて使う方は登録します。

登録が済んだらメニューバーの「My Applets」から「New Applet」

もしTrelloのカードが動いたら、LINEに通知を送る。と設定します。

f:id:chanyou0311:20170927133641p:plain

Trelloを選ぶ。何かしらの認証求められるので許可します。

f:id:chanyou0311:20170927133745p:plain

Card added to listを選択。

f:id:chanyou0311:20170927133825p:plain

先ほど作ったボードとリストを記入します。リスト名を間違えないように注意。

f:id:chanyou0311:20170927134004p:plain

そしたらつぎはthat

f:id:chanyou0311:20170927134118p:plain

LINEを選択して、Send messageを選択する。

ここでも何かしらの認証求められるので許可します。うろ覚えですが、スマホのLINEアプリのプロフィール設定でメールアドレスのとパスワードの設定ができます。よくわからなければ「LINE IFTTT」あたりでググればよいかと。

f:id:chanyou0311:20170927134155p:plain

f:id:chanyou0311:20170927134140p:plain

通知を送りたいグループを設定します。ここでは1:1でLINE Notifyから通知を受け取るようにします。

なお、グループに通知を送る場合にはLINE Notifyを招待しておきます。

f:id:chanyou0311:20170927134843p:plain

そして、Messageで通知の内容を見やすいように書き換えます。

{{ 二重括弧 }}で囲まれた部分は通知の内容によって置き換わります。プログラムでいう変数みたいなものです。「Add ingredient」から一覧を確認できるので、好きなように入れていきましょう。

僕は以下のように書きました。

【タスク完了】{{Title}}が{{ListName}}に移動しました。<br><br>
移動日時: {{AddedAt}}<br><br>
移動者: {{CreatorFullName}}<br><br>
URL: {{CardURL}}

Create actionからのFinishで設定完了です。

f:id:chanyou0311:20170927135321p:plain

「Receive notifications when this Applet runs」はOFFにしておいでいいでしょう。

実際に使ってみる

Trelloでカードを完了に動かします。

f:id:chanyou0311:20170927140155p:plain

通知が来ました。(移動者とURL消しています)

f:id:chanyou0311:20170927140513p:plain

これで、普段はLINEやり取りしながら、タスクの進捗状況も通知で送られてみんなで確認できます。

しばらくこれで運用してみます。

旅行の予定を立てるのに便利な簡易表を作ってみたよ

旅行などであっちこっち行ったりするときに、どこからどこに移動するのに何分かかって、移動先で何分滞在して…といった計画を頭の中で組み立てるのは難しいもの。

自分はその際に、スプレッドシートでサクッと計画立ててるので、いつも使ってるものをテンプレート化してみた。

続きを読む

習慣化するには変化がすぐわかったほうがいいと思う

日記や家計簿を続けるのが苦手な人も多いと思う。 筋トレや毎日のランニングも途中でやめちゃったって人も多いのでは。三日坊主ってやつ。
自分もそうだ。

最近思うのは、物事を続けて習慣化するには、続けたことで何が変化したかわかるのが大事だと思うんだー。三日坊主しがちな人は、「3日やっても変化がでないからだめじゃん!やーめた!」となるんじゃないかと。

だから、こういうのが続かない人は、頻繁に比較をすることが大事になってくるんだと思う。

例えば家計簿だと、今日使ったお金の記録をとってみて、次の日も使ったお金の記録をとる。その際に、前日と見比べるようにする。「昨日は1500円使ったのに今日は2300円も使った! どうしてどうして〜?」といったように、比較することで「記録とってよかったー、明日もしよう」となりやすい。

2週間続くと、週単位での比較ができるし、2ヶ月続くと月単位での比較ができる。こうなってくると、記録とらないほうが気持ち悪くなってくる、たぶん。

いま作りたいなーって考えてるのは、この考えを当てはめた日記システム。最初の一週間は前日との比較。日記を書き終わったら前日書いた日記が自動的に表示されて、「昨日はこんなことあったなー」となる。一週間続くと先週の同じ曜日の日記を再表示して「先週と同じもの食べたなー」とかわかってくると、どんどん続いていくのかなと。

日記って自分から見返さないと比較できないから、それを自動的にやってくれると続くし書いてて楽しいかなーと。

あ、ちなみにこれは10年日記の考えを発展させて、三日坊主でも楽しくできるかなーと思ったもの。

続けられる!WorkFlowyを使った日記の書き方

いつか作ろうと思う。