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書いたことないけど)
# 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コード好き過ぎ。
やってないけど。