ふるつき

v(*'='*)v かに

SECCON2017 国内決勝に出た

KOSENSECで優勝したので theoldmoon0602、thrust2799、kyumina8376、miwpayou0808 からなる insecure というチームで SECCON 国内決勝に出ました。 結果は 300pt で 24チーム中 19 位でした。私は300pt をSubmit したので一応WriteUpを書きます。はあ〜〜〜〜負けた。

https://i.gyazo.com/c73c95915dee890e2a2d8ffe15b1985f.png

梅田

画像Uploaderの問題です。King of the Hill なので flag を書き込むべきページみたいなのがあって、そこにでかでかと SECCON{hogehoge} が鎮座していました。他のチームはこれを速攻で見つけていたっぽくて開始と同時に AC がN回行われていました。クソ焦る。私は 船橋を検討して無理だな! と結論付けた後にこれを見つけてSubmitした。梅田に取り組んでいるチームメイトもいたんですがね。 100pt

幕張

golang 製のバイナリが二つ渡されます。まずはAだけが配られていたのでAについて話す。最初は「えっなにこれ即終了するじゃ〜ん。私の環境では動かねぇのかよ」とか思って放置していましたが、 miwpayou0808 がちょっと解析して 適当に command line arguments を渡すと usage を吐いてくれることを教えてくれてやる気が出たのでもうちょっとやることにしました。

よくわかんないけどバイナリを IDA でみていたら END PRIVATE KEY みたいな文字列に遭遇して「おっ秘密鍵ジャーン」と思ってコピー&ペーストしてvim で整形しました。鍵があるということは通信しているとあたりをつけて、 wireshark でパケットを監視しながらもう一度起動しました。秘密鍵もってるし秘密通信を解読できるね! と思っていたら解読できなかったんですが、鍵交換アルゴリズムの中にフラグっぽい文字を見つけました。

後から調べたら、このバイナリはもう二つ、公開鍵証明書みたいなものを持っていて、それの mail address の欄がそうなっていたっぽいです。

この頃にはこのバイナリが MQTT みたいなプロトコルで通信していることがわかりました。 もう一つのBのバイナリも MQTT で通信するプログラムっぽかった。

けどいろいろよくわからなくて時間を無限に溶かしていましたが、 無限に溶かした時間のうち少しが有意義だったっぽくて、 MQTT には topic なる概念があって、まあ IRC で言う channel みたいなものだと思うんですけど、まあそういうものがあるということがわかりました。

で、このバイナリが何ていうchannel で通信してるかを調べたら、サービス内に飛んでるメッセージを拾えると思ったので、 クライアントはここから https://qiita.com/n-yamanaka/items/91dbd7bd9fed5b3fbed4 頂戴してきて、バイナリの中から topic っぽい文字列を探そうとしたのですが、 IDA でも gdb でも全然わからず、 miwpayou0808 が探してきていた delve という go binary 用の gdb みたいなやつを使いました。 b Subscribe→c→si→args でSubscribeしてるときの引数を見られたんですが、ここに /mkhr/v/1/unlock/1 のような名前があって、 「これじゃーん!」となりました。でもこれに対して subscribe してみても全然飛んできませんでしたどういうことだよ。

miwpayou0808 がもう一個のバイナリもおんなじように調べたら今度は 別のtopic 名があって、そっちを subscribe したらいろいろ飛んできて「うーわこれじゃん」ってなりました。その中にしれっと FLAG も飛んできてた。

多分これで subscribe の代わりに defense キーワードを publish すると defense ポイントが入るような気がしたんですが↑の時点で残り時間が 5分もなかったので意味なし!!!!!

追記

さいこうですね


これで 300 点でした。 miwpayou0808 は基本的に 幕張の rev をやってて、残りの二人は府中梅田船橋を横断していたっぽいですけどよくわからなかった。完全に食いの残る競技と言うかはーつらい。つらいなー。insecureは弱いということです。


どうでもいいことですが懇親会みたいなやつ、完全に電池が切れて端っこで座ったり寝たりしていました。人間がたくさんいて喋ってるのが本当に苦手っぽい。友達を作り損ねた。

来年はもう参加できないと思うけど参加できたら師匠に出てもらってもうちょっとまともに戦えてる風を演出したいです

手書きLLパーサにおける左結合性を持つ演算子の左再帰をループで解決する

 まあ人間が弱いと、構文解析再帰を書き下すしかできないんですが、ナイーブな実装だと左再帰問題に出会います( A->A+B みたいなルールをコードに落とし込むと、 parseA の呼び出しで無限再帰になる)。右結合性の演算子のパースならぽいっとできるんですが、左結合の演算子だと苦戦しました。いろいろグーグルしてみるんだけど気持ちが上がらないとちゃんと読まないし、私が読めるコードが欲しい気持ちになったので書き残しておきます。n回ここに来るんだろうなぁ。

 ちなみに a + b + c(+ (+ a b) c) になるのが左結合性、 (+ a (+ b c)) になるのが右結合性です。

gist.github.com

なんということは無くて、ただのループです。こんなのは知ってるかどうかという気持ちになってきた。 ちなみに明らかに parseAddparseMul が同じ形をしているのでテンプレートとかmixinに落とし込みたいところですよね。 任意の左結合性二項演算子を parseする関数を返す高階関数とか。

これをOCamlで書けるようになりたい。

シェル芸botの宣伝をさせてください

 この記事はShell Script Advent Calendar の19日目に向けて書かれた記事です。参加する気はなかったんですが、ブログでシェル芸botについて言及したことがなかったのと、ふとカレンダーを見たら空いてたのとで入れてもらうことにしました。よろしくお願いします。


シェル芸botについて

 シェル芸bot ( @minyoruminyon )をご存知でしょうか。シェル芸botは、「TLに現れた #シェル芸 または #危険シェル芸 とタグのついたツイートについて、そのツイートをシェルスクリプトとしての実行を試み、正常終了すれば結果を引用でツイートする」というbotになります。「シェル芸」とはなんぞやという方は こちら の定義や #シェル芸 - Twitter Search の例などをご参照下さい。

 シェル芸botは現在 386 フォロワーを獲得しており、生まれてから 2633 のシェル芸を実行してきました。このシェル芸botを作ったのが私ふるつきで、せっかくなのでセールストークをさせていただきます。

 シェル芸botが生まれたのは 2017年の 6月であると、 シェル芸史 にあります。以前から、 base64 encoded なTweetをする界隈に身をおいていたこともあり、ある程度の「シェル芸」というワードに親しんでいた私はしかし、TLに流れてくる不可思議な記号列=シェル芸をターミナルに貼り付けて実行するのが面倒&怖かった憶えがあります。そこで、ある種のサンドボックスとして、シェル芸botを作成することにしました。もちろん、シェル芸界隈のノリの良さのようなものを目にしており、これはイケるだろうと思っていなかったわけがありませんが。

 斯くしてシェル芸botはTL上に生を受け、瞬く間にシェル芸人たちの間に広がった、はずです。はじめは不慮の停止が数度あった気がしますが、現在は安定して稼働を続けています。シェル芸botはユーザフレンドリーなbotを目指しているので、シェル芸人の皆様の活動に合わせて日々利用できるコマンドが追加されています。

@paiza_run との関係

 TL上のプログラムを実行するとくれば、まず思い浮かぶのが paiza_run です。シェル芸botと動きは丸かぶりですが、シェル芸botはどちらかといえば、「ツイートしたシェル芸が思いがけず実行され、結果が見られる」という public な向きのbot です。

 paiza_run は凍結されてしまいましたが、以前にはコラボレーションしたこともありました。

togetter.com

シェル芸bot に触れてみよう

 大したハードルもないですが、シェル芸bot に初めて触る方向けのチュートリアルです。

  1. シェル芸botをフォローしましょう
  2. シェル芸botのフォローバックを待ちましょう(手動です)
  3. echo-sd シェル芸楽しい!! #シェル芸 とツイートします

 これであなたもシェル芸人です。巷では様々なシェル芸が飛び交っていますので眺めるも解読するも創り出すも良しです。お楽しみ下さい。  

シェル芸bot のこれから

 ある程度安定してきたシェル芸botですが、これからも「あんなコマンドがほしい」「こんなコマンドを作った」が尽きることはないと思うので、ガンガンアップデートをかましていきたいです(何かのタイミングで私の目に止まれば可及的に速やかに更新致します)。そしてできれば私もシェル芸人の仲間入りを果たしたい……!

 ところでシェル芸bot さんの顔グラがないのが味気ないので募集しています。よろしくお願いします。