#SECCON i18nオンライン予選 (2014/12) WriteUp

Posted on December 07, 2014 at 11:55:28 UTC


去年&おととしはifconfigという適当な名前のチーム名で参戦していたのですが、コマンド名がオワコン化してしまったためiptablesに変更し、今回はこんなメンバーで参戦してますた。

結果は2500点。さすがに本戦出場ラインには程遠い…。

QR300

謎のスターウォーズ風の動画がYoutubeにアップされている。

よく見ると下の方にQRコードが流れている。これを取り出すために

  1. ffmpegで画像をバラバラに
  2. QRコードとは関係ない画像をてきとうに削除
  3. OpenCV+Pythonで下の方を切り出し
  4. ImageMagickで全部くっつけて、あとは正方形に整形する

すると最終的にこんな感じのちょっときたないQRコードになる。

これを誤り訂正を信じてスマホのカメラに読み込ませればキーを得ることができる

Web200

http://reajuu.pwn.seccon.jp/

リア充爆発

適当なIDが発行され、それでログインしていろいろと入れると最終的にスコアが出る仕組みになっている。

最後のスコア画面でのスコア描画はJSで行われていて、それのために読み込んでいるファイルを見るとIDとパスワードがモロに書かれている。

ここで、ユーザ番号1のユーザを見るとキーにつながるID:PWを見つけることができる。

あとは適当にログインしてポチポチおしてればキーがみつかる。

Network200

SECCONバージョン2を見つける問題。SRVレコード知ってれば瞬殺。

問題文のとおりに

dig _http._tcp.h2o.pwn.seccon.jp. srv

とでもすればよい。

[email protected]:~/seccon$ dig  _http._tcp.h2o.pwn.seccon.jp. srv

; <<>> DiG 9.9.5-3-Ubuntu <<>> _http._tcp.h2o.pwn.seccon.jp. srv
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53060
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;_http._tcp.h2o.pwn.seccon.jp.  IN  SRV

;; ANSWER SECTION:
_http._tcp.h2o.pwn.seccon.jp. 120 IN    SRV 1 1 65080 h2o.pwn.seccon.jp.

(以下略)

すると、ポート番号がわかるのでHTTPでアクセスするとバージョン2でアクセスするよう要求される。

[email protected]:~/seccon$ curl http://h2o.pwn.seccon.jp:65080
Plz access with version 2

なのでHTTP/2対応のcurlをビルド。それを使ってアクセスしたいがHTTPSのポート番号がほしい。

そこで

dig _https._tcp.h2o.pwn.seccon.jp. srv

とするとポート番号がわかる。

[email protected]:~/seccon/curl-7.39.0/src$ dig  _https._tcp.h2o.pwn.seccon.jp. srv
; <<>> DiG 9.9.5-3-Ubuntu <<>> _https._tcp.h2o.pwn.seccon.jp. srv
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8986
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;_https._tcp.h2o.pwn.seccon.jp. IN  SRV

;; ANSWER SECTION:
_https._tcp.h2o.pwn.seccon.jp. 120 IN   SRV 2 0 65432 h2o.pwn.seccon.jp.

(以下略)

あとは普通にcurlで引っ張ればヘッダを見るよう促す表示が。
なのでヘッダを見るとキーがある。

[email protected]:~/seccon/curl-7.39.0/src$ ./curl -k --http2 -l https://h2o.pwn.seccon.jp:65432
Plz see your HPACK

[email protected]:~/seccon/curl-7.39.0/src$ ./curl -k --http2 -i https://h2o.pwn.seccon.jp:65432
HTTP/2.0 200
server:h2o/0.1
date:Sun, 07 Dec 2014 02:08:29 GMT
x-flag-is:SECCON{spdy4isSoC001}
content-type:text/html
last-modified:Sat, 29 Nov 2014 15:22:23 GMT
etag:"5479e4af-13"

Plz see your HPACK

ヒントだらけだったのですぐできた。多分curlのビルドに一番時間を食ったような気がする。

QR200

パンケーキにかかれた壊れたQRコードを読む問題。とけませんでした。

以下を大いに参考にしてほぼ同様のやり方で行った。偉大なる先人に感謝。

http://eleclog.quitsq.com/2014/01/seccon-ctf-2013-online-forensics-400.html

ただ、結局キーにたどり着けなかった。
誤り訂正レベルHでバージョン3、マスクパターンは001、英数字モードで6文字?のQRでデータ部分は完全に残っている状態。最初に「SECCON」の文字が見えたがそれだけでは無理っぽくて、全部解読して入力したがなにかミスっているようで結局とけなかった。