SECCON Beginners 2017 東京 writeup

先日、SECCON Beginners 2017 東京に参加してきました。

ギリギリ間に合いました。

自分が解いた問題を備忘録的な感じで書いていきます。

これがどうやらCTF伝統のwriteupというものらしいです。

 

[Welcome!!]

表示されたフラグを入力します。

 

[My Style]

CSSにフラグがあります。

 

[Simple SQLi]

少し記憶が薄れているのでもしかしたら違うかもしれませんが、確か1つのフォームに特定の文字列を入れる問題だったはず。

解き方

フォームに以下の文字列を入れる。

' or '1' = '1

おそらくSQLクエリは

SELECT * FROM TABLES WHERE ID = 'id'

これに上記の文字列を入れると

 SELECT * FROM TABLES WHERE ID = '' or '1' = '1'

 このようになるとクエリはTABLESに入っているデータを全て出力するのでフラグが得られます。

 

[Simple]

for100_1.pcapngというキャプチャファイルが与えられます。

$ strings for100_1.pcapng 

 こうすると複数のctf4b{.*}が出てくるので、この中で長い文字列がフラグです。

 

[Export]

for100_2.pcapというファイルが与えられます。

 Forensicsの講義にて教えていただいた、バイナリファイル内にあるファイルを取り出すことができるbinwalkを使います。

$ binwalk -Me for100_2.pcap 

 これにより*.extractedというディレクトリが作られ中にも再帰的に取り出されたディレクトリがあります。

このディレクトリの中にctf.txtというファイルがあり、この中身がフラグとなります。

 

[W4nn4cry?]

少し前に話題になったWannacryをモデルにした問題です。

$ binwalk -Me for200

取り出されたディレクトリを見てみると.bash_history,flag.txt_encrypted,.install.shというファイルがあります。

この中の.install.shは同ディレクトリ内にあるファイルを暗号化し元ファイルを消すスクリプトです。

#! /bin/bash

for file in *; do

    openssl aes-256-cbc -e -in $file -out $file'_encrypted' -pass pass:[編集済み]

    rm $file

done

このスクリプトを元に復号化するコマンドを実行します。

$ openssl aes-256-cbc -d -in flag.txt_encrypted -out 'flag.txt_decoded' -pass pass:[編集済み]

これで出力されたflag.txt_decodedの中にフラグがあります。

 

[Calcme]

アセンブリで書かれた命令に沿ってeaxの値を計算した値の10進数がフラグとなります。

 

[extractme]

extractmeというELF実行形式のバイナリが与えられます。

$ strings extractme

これをするとどうやら複数行に渡ってフラグが平文で出てきているのでこれを整えたのがフラグとなります。

 

自分が自力で解けたのはここまででした。

得点900点で19位とまあまあの順位でした。