SECCON 2013 北海道大会に参加しました / writeup

SECCON 2013 北海道大会に参加してきました。

チーム dodododo ( @akiym さんと @goldcard さんと @ayako119 さんとのチーム)として参加してきましたが、足手まといマンになってしまってつらいです…

解いた問題

「スロットマシーン」(Web,300pt) と「熱いメッセージ」(Web,100pt) の二問です。

スロットマシーン

f:id:lmt_swallow:20131204142330p:plain

こういう問題です。これで所持金が $10,000,00 (もう一桁多い?)を超えれば flag が帰ってくる仕様でした。
状況を整理すると、

A:
・start ボタンを押すと、

 {
	"hash"	:	[keccak32で計算したhash,SHA-3かなんかっぽい], 
	"bet"	:	[任意の整数], 
	"action":	"spin"
} 

といったリクエストを投げる
・それに対してのレスポンスは、

 {
 	"status":"OK",
 	"result":[任意の三桁 or 二桁(1桁は確認してない) の整数],
 	"return":[あたりなら1以上の整数,はずれなら0(記憶が曖昧)
} 

となっていた。
・bet > 自分の持ち金 の時レスポンスは {"status":"error"}
B:
・スロットを止め終わった瞬間に、

 {
 	"hash"	:[リクエストと同様なhash], 
 	"action":"finish"
 } 

といったリクエストを投げる
・このとき

{
	"status":"OK",
	"amount":[当たり外れで増減した結果の残額]
} 

といったレスポンスが帰ってくる。

この時、bet は入力フォームにおいて1桁という制限がかかっていましたが、リクエストを直に投げる or HTML 書き換えてしまえば bet は bet <= 自分の持ち金 の範囲にすることが可能でした。
また、Bのリクエストを送るまではAで発行されたresult(スロットの出目)での当たり外れによるamountの増減はありません。(@akiym さんに教えてもらったようなもので、僕自身はほとんどといてない…)
ここから言えるのは、「とりあえずAのリクエスト投げて、あたりの時だけBのリクエストを投げれば、amountは上昇し続ける」ということでした。
以上、ここまでで攻略法はわかったので、あとはリクエストを投げるスクリプトを書くだけで終わりです。
Firefox のJSコンソールで書いたせいで手元に残っていませんが、Aのリクエスト投げて、result > 0 なら Bのリクエストを投げる、というスクリプトを書けば良いです。(これに手こずったのでプログラミング力無し)

熱いメッセージ

s=0 & (k=0 | k=-3)[ output(8+k); k:=k-3; s:=0; ]
s=0 & c < 2 [ output(12); c:=c+1; s:=0; ]
s=0 & c = 2 [ output(15); s:=2; ]
s=2 [ output(27); output(0); s:=3]
s=3 [ output(19-a); s:=4; ]
s=4 & a=0; [ a:=14; s:=3; ]
a=14 [ output(3); output(3); a:=1; ]
a<13 [ output(15); a:=a+1; ]
b=0 [ output(14); b:=100; ]

こういったPLMAM1と呼ばれる言語のスクリプトが渡されます。コレによる出力が Flag なんだそうです。
1. ググります。
2.[見つけました。](http://rikai.jst.go.jp/koushien/tournament/img/2013/jitsugi03_jitsugi_manual.pdf)
3.読みます。
4.紙とペンを用意します。
5.手動で走らせます。
6.出力: HELLO, SECCOOOOOOOOOOOON
やるだけでしたがスクリプト書くより早く解けたかなあと思います。


まとめ

この二問しか解いていません。(デデドン)
人権を得られずに迷惑ばかりかけた二日間ですが、やはり実際の会場でやる CTF は面白いですね。
精進します。
SECCON全国は高校入試(3/5だったかな?)との兼ね合いでまだ定かではありません…会えたら誰かお寿司奢ってください。


dodododo の他のメンバーの writeup

@ayako119 さんのwriteup
@akiym さんのwriteup
@goldcard さんのwriteup

JOIss 2013 参加しました

JOIss とは

JOIss は 情報オリンピック(Japan Olympiad in Infomatics)の夏期セミナー(summer seminar)です。
通常夏季セミ(でいいの?)。

0日目

僕は前泊です。一日早く行きました。 つばめし ことゲヒルン飯行きました。 @xrekkusuと@oookamiさんが羽田で捕獲ミッションしてくれてたんですが僕のミスで上手く行かずつらかった… つばめグリル is おいしい。 あとは事務局の某氏とふたりっきり(?)でご飯を食べておりましたとさ…。

1日目

集合時間は15:00頃なのに僕は朝の9:30から会場にいました…(清掃の関係で部屋を出ねばならなかった) 最初はコミュ障キメてた。つらかった。 きゃにーさんが可愛かった。 .@the_nikaidoes さんのAI本選んでじゃんけんなしで勝ったのでつよみ。 セミナーではひたすら実装方針を考えておりました。

2日目

セミナー,進捗有りませんでした。進捗進捗進捗進捗進捗進捗進捗進捗… ビッグデータの講義ではひたすら数学数学してたのでつらかった。まあどんな事をやっているかはわかったけど,P!=NPを過ぎて「〜は〜が解ければ〜も帰着する」みたいな話題(もはや覚えてない)してる時には死んで寝てた。ごめんなさい…ごめんなさい…

3日目

セミナー進捗無かったのでHE-MAN聞いてテンション上げて進捗を加速させてた。 女性教育会館のかたの講義は資料を配布してもらった後意識が朦朧としておりました。大分寝てた感じがする… まあお話はちゃんと聞けていたような気がします(?)

4日目

セミナー進捗無かったけどまあスライドを書き上げた(雑)。 スライドはコレです。 進捗進捗してたけどまあ全然進捗無かったので進捗でした。某学園disに心を病ませながら私もdisっておりました。 数理計画法のセミナーは非常に面白かったです。資料もらいました。そのあとも進捗はなかったので

5日目

発表でした。発表はザコでした。進捗がありません。 AIのデモするときに非常に残念な感じになってしまってつらかった…

6日目

僕は後泊もしたのでこれは羽田空港で書いています。 秋葉原行ったりしました。jubeatやりました。

まとめ

  • 楽しかった✌(‘ω’✌ )三✌(‘ω’)✌三( ✌’ω’)✌
  • れあんさん(aka 仔竜さん) is 添い寝 (ただしとざんさんは無罪)
  • きゃにーさん is かわいい
  • 灘勢 is すごい and こわい
  • チューター is GOD
  • 某学園 is bad

わふれるかも言っていたように,タダでご飯が食べられて交通費がもらえるようなイベントは良いです。 もうちょっとガチ勢できるようになって今年の本戦と来年の夏季セミでますよ。がんばるするが。