SECCON 2015 online

前日が同期の結婚式で多忙だったので抜け殻状態でトライ。

 

二日酔いの寝不足で途中寝落ちたりしたので、実質3時間程度しか戦っていない。

 

結果、1問 300点しか取れませんでした。

 

やっぱ片手間じゃ太刀打ちできませんよねー。

 

 

# network 100 Entry form

## 大会中の動き

Webアプリ系問題。  

Emailアドレスと名前を入力する登録フォーム。  

 

ディレクトリトラバーサルで問題アプリのソースコードを発見。  

sendmailを使って登録完了メールを送るソースだったので、捨てアドで登録してメールヘッダインジェクションを試みるも、そもそもメールが届かない。

 

じゃあコマンドインジェクションかー。と試してみるが、動かず。

 

一旦他の問題に移り、そのまま放置

 

## 事後の反省

WirteUpを見る限り、アプローチは正しかった模様。  

おそらくは、構文の組み立てがちゃんとできていなかったのだと思う。  

(シングルクォーテーションの扱いとか、気をつけたつもりだけど雑だったんだと思う)

 

 

# network 200 fragment2

## 大会中の動き

pcap解析の問題。

 

パケット末尾に the flag is in header とあったので、ヘッダを順番にみてみる。

 

しかし、  

- pcapヘッダ

- etherヘッダ

- ipヘッダ

- tcpヘッダ

いずれも不審点なし。

 

tcpヘッダの末尾から the flag is...の間に 70バイトほどのデータが有ったので、ここに着目。

 

port80だし、HTTP2だろーと思って、Wiresharkでデコードしてみる。

 

が、デコード出来ず。

 

万策尽きて、別の問題へ

 

## 事後の反省

なんと、予想通り HTTP2だったらしい。  

Wiresharkをバージョンアップして再度試したところ、うまくデコードできた。。。グダグダ  

 

そしてHeader Block Fragmentがある。これがFragment2か。

 

HPACKされているはずなので、こいつをHPACKデコードすればフラグが出そう。

 

go言語のHAPCKデコーダを見つけたので、こいつを使えばいけそうな予感。  

(go書いたことないけど)

github.com

 

 

 

# Unknown 300 Exec dmesg

## 大会中の動き

Linuxのisoイメージが配布される。  

中身は tiny core linux.  

新入社員のとき仕事で使ってた懐かしいOS。

 

問題文のとおりdmesgを実行しようとしたが、busybox に ねーよ と怒られる。

dmesgの本体は /var/ だか /dev/ にあるはずだけど思いだせねー  

と思い、 dmesgアリ版のbusyboxを調達することにする。

 

uname -a したところ、幸い、i686だったので特に障害も無し。

 

dmesgできるバイナリを配置して、実行すると、dmesg中にフラグを見つけた。

 

 

## 事後の反省

別のWriteupで

```

# grep -iR SECCON /

でフラグ発見。grep最強!

```

という記述を見て、エレガントだと思った。

 

また、dmesgを目grepでフラグ見つけた自分、アカンなと思った。

 

 

# 全体

今回はスケジュール的に専念出来ない状況だったので、まあ仕方ないといえば仕方ない。

 

逆に、腰を据えて挑まないとろくにパフォーマンスが出ないということをよく証明する意味で、良い悪い見本(?)となる経験だった。

 

あとどうでもいいけど、出題者QRコード好き過ぎ。  

やってないけど。