SECCON」タグアーカイブ

QR puzzle Write-up


どうもみむらです。

冬だ!おこただ!CTFだ! ということで、
今年も SECCON CTF 2015 のオンライン予選に参加しました。

12月5日~12月6日ということで、
んじゃ泊まり込んでやってみますか・・ということで、
大学に泊まり込んでやっていました。

・・・論文作成で煮詰まっていたので、気分転換にもいいよね! ということで。

 

今回は出題された問題のうち、 “QR-Puzzle (Windows)” という問題について。

問題概要や想定解に関しては、出題者である山崎さんの記事を閲覧して頂ければとおもいます。

SECCON 2015オンライン予選に3問を出題しました! | ラック公式ブログ | 株式会社ラック
http://www.lac.co.jp/blog/category/security/201512072.html

 

さて。
CTF, Windows と来ると勝手に「やる気スイッチ」(古い?)が入る私です。

問題に関してこんな感じで解きました:


1. ファイルを見る。

image

.net !!
ドットネットですよ、おくさん!!

これはもう、この時点で やる気スイッチ が入ります。
びんびんに入ります。

 

ということで、まずは逆アセンブリ結果を見ていきます。

image

まずリソースを見て、”SmartAssembly なのかなぁ..” と思いを馳せ、

次に作者の名前をみて「ごめんなさい..」という懺悔の気持ちになり、
いったん気分転換の為にお風呂に行きました。

このとき、銭湯にて、風呂場にいた皆さんからもの凄く強い視線を感じて
「何か私ミスしてるかな・・」と思って振り返ったところ、
皆さん背中や腕に絵が描かれていたのはいい思い出です。
でもそのあと「怖い人じゃない・・!」と思う出来ごともありまして、
ルシウス技師の言葉を思い出した・・ということがありました。

 

その後、いったん自分のなかで「ごめんなさい」をしたうえで、
「んじゃ解くか!」ということで解析を始めました。

いえ、以前こういう形で取り上げられたことがありまして・・
http://www.slideshare.net/ymzkei5/xss-201412089

また、いろいろとお世話になっているかたでもありますので、申し訳ない気持ちがあったのですが、「これは CTF だ。今は競技に集中して、終わった後、お会いした時に謝ればいい」と気持ちを切り替えました。

 


2. プログラムを起動する

image

QRCode のパズルゲームになっていました。
手でかちゃかちゃやって、何か文字が得られる QR であるということも分かりました。


3. 難読化を解く

プログラムがどういうものか分かったところで、難読化を解きます。
なんとなく雰囲気から SmartAssembly 感がしていましたので、
その難読化解除ツールをインターネット上から適当に持ってきて適用します。

 

難読化解除前:

image

難読化解除後:

image

 

読めるようになりました。


4. Form_Load を読む

普通の .net なアプリケーションを読む場合、読み始める場所は多々あるのですが、
画面の初期化部分のコードを見ることで、何を叩いているのかを調べることにしました。

こんな感じのコードです。
スタックベースの処理系なので、引数を積んで、呼び出して、結果は積まれる。というような。

image

 

でもって、注目したいのはこのあたり。

image

 

引数(数字)を取って、返値は文字列になる。
なんとなく答えの文字列を読んでそうな雰囲気がしましたので、ここを読んでみます。

読み込んでいると思われる所は他にも幾つかありましたが、
読むのが面倒くさそうだったのでやめました・・。

たとえば、答えをメモリ上で MD5Hash にしている・・と思われる箇所など、
幾つか良さそうな場所もありました。

image

見た感じ、リソースファイルから何か読み出しているんだろう、という雰囲気が伝わってきます。

確認のためにコンストラクタも見てみますと、
自分自身を取得してその中のリソースファイルを抜き出した後、
処理を実行している事が読めますので、この中に何か答えに繋がるものがあるな、と判断できます。

(実際にはリソースデータをデータとして抜き出した後、難読化を解除し、そのあとそのデータをライブラリとして読み直して、中に書かれている命令を実行するコードが書かれているようです。)

image


5.内部リソースを展開

いちいち手で解いてもいいのですが、CTF は時間勝負ということで、
「どうせ一回解いたデータはメモリ上に持ってるだろ・・」ということでデータを抜き出します。

デバッガでちまちまーっとやって ( “.loadby sos clr” とか・・! ) 抜き出すとこんな感じ:

image

なんかこう、英単語帳みたいな Dictionary 型のデータが出てきました。

 

もしかして・・と思い、最初に手で解いた答えの文字列が入っていないかどうかを調べると、
この一覧に含まれていました。

どうやら使えそうです。


6.機械的に解く。

じゃ、総当たりすればいいんですかね?
ということで適当にプログラムを書いてみます。

(言語は HSP.

origdic="seccon|accept|achieve|acquire|add|advance|affect|agree|allow|appear|apply|approach|argue|assume|avoid|bear|beat|belong|bite|care|catch|claim|communicate|compare|consider|consume|contact|contain|continue|cost|count|cover|create|cross|decline|define|depend|describe|destroy|determine|develop|die|disappear|discover|draw|earn|encourage|enter|establish|excite|exist|expect|explain|express|face|fail|fear|feed|fire|fit|flow|follow|gain|gather|get|guess|hit|hold|hunt|hurt|imagine|improve|include|increase|indicate|influence|insist|introduce|invent|involve|lay|lead|lie|lose|maintain|manage|manufacture|marry|mean|mention|miss|observe|offer|perform|please|prefer|prepare|press|prevent|produce|program|protect|prove|provide|publish|raise|reach|realize|receive|recognize|reduce|refer|reflect|refuse|regard|remain|remember|reply|represent|require|reveal|rise|risk|rule|satisfy|save|search|seat|seek|seem|serve|share|solve|sound|spend|spread|stay|steal|stick|strike|struggle|suffer|suggest|support|suppose|surprise|survive|tend|treat|vary|waste|wear|win|wonder|worry|action|activity|advantage|aid|amount|area|arms|aspect|atmosphere|attempt|attitude|audience|basis|behavior|benefit|bill|birth|blood|brain|case|cause|challenge|chance|character|choice|civilization|class|clerk|communication|community|company|competition|content|control|crowd|culture|customer|damage|degree|demand|desire|detail|development|difference|difficulty|direction|disease|distance|doubt|economy|education|effect|environment|event|evidence|exchange|exercise|experience|experiment|expression|fact|factor|failure|feature|field|figure|force|form|freedom|generation|god|government|growth|habit|history|idea|industry|information|issue|kid|knowledge|labor|lack|language|law|level|life|limit|line|literature|loss|majority|mark|market|mass|material|meal|measure|method|million|mind|mistake|moment|most|movement|nation|nature|note|object|office|opinion|opportunity|order|paper|party|period|phone|place|plant|pleasure|policy|population|position|power|practice|president|price|principle|problem|process|product|production|progress|purpose|quality|range|rate|reality|reason|relation|relationship|research|respect|response|rest|result|science|sense|shape|side|sign|situation|skill|society|sort|species|speech|stage|standard|state|step|stranger|stress|structure|subject|success|supply|surface|system|task|taste|technology|temperature|term|theory|trade|traffic|truth|universe|university|value|variety|view|war|weather|weight|afraid|ancient|available|average|aware|basic|certain|close|common|complete|complex|concerned|correct|direct|dressed|due|economic|environmental|equal|essential|expensive|familiar|famous|foreign|free|full|general|healthy|heavy|huge|human|impossible|individual|industrial|international|likely|local|major|married|medical|mental|modern|national|native|natural|necessary|obvious|ordinary|original|own|particular|past|personal|physical|political|popular|possible|practical|present|private|professional|public|recent|related|right|round|scientific|separate|serious|similar|single|social|special|strange|sure|thick|traditional|useful|various|vast|whole|wrong|abroad|actually|badly|especially|eventually|exactly|extremely|forward|frequently|generally|highly|however|immediately|indeed|later|maybe|merely|naturally|otherwise|particularly|pretty|probably|quite|recently|simply|therefore|although|unless|while|except|toward|worth|behind|abandon|absorb|accomplish|accompany|accuse|adapt|admire|admit|adopt|advertise|afford|aim|alter|annoy|appeal|arise|arrange|associate|attach|attend|attract|behave|bind|block|blow|borrow|breathe|collect|combine|command|compete|complain|compose|concentrate|conclude|confuse|connect|considerable|consist|construct|contribute|convey|convince|cope|criticize|decision|declare|decrease|defeat|defend|deny|derive|devote|disappoint|discuss|dislike|display|distinguish|disturb|divide|educate|emerge|emphasize|employ|enable|encounter|entertain|estimate|examine|expand|explore|export|expose|extend|fix|frighten|govern|graduate|greet|handle|hang|hate|hesitate|hire|identify|ignore|imply|import|impress|inform|intend|interpret|isolate|judge|notice|obtain|occupy|oppose|organize|overcome|participate|pause|perceive|permit|persuade|possess|praise|predict|preserve|pretend|promote|propose|punish|purchase|pursue|quit|react|recommend|recover|reject|release|rely|remind|remove|repair|replace|reserve|respond|retire|roll|rush|select|settle|sink|smell|stare|stimulate|stretch|suit|surround|suspect|tear|threaten|transfer|transform|translate|transport|vote|warn|account|addition|address|advice|affair|agent|agreement|agriculture|alternative|ancestor|anger|anxiety|appearance|assumption|association|author|authority|automobile|background|capacity|capital|career|characteristic|charge|circumstance|citizen|climate|conclusion|condition|conduct|conference|confidence|conflict|consequence|consumption|continent|contrast|contribution|conversation|cooperation|copy|creation|crime|crisis|criticism|crop|curiosity|custom|debate|debt|decade|definition|delight|democracy|desert|destruction|device|diet|disaster|discipline|discussion|distinction|district|drug|element|employee|enemy|entertainment|error|evolution|excuse|expert|explanation|extent|faith|fate|fault|favor|flight|focus|fuel|function|genius|goal|grammar|grant|guide|harm|height|household|humanity|ideal|imagination|immigrant|impact|impression|income|independence|instruction|intelligence|item|journey|joy|judgement|laboratory|landscape|laughter|leisure|lesson|luck|manager|manner|master|match|matter|merchant|murder|necessity|neighborhood|notion|novel|observation|occasion|occupation|operation|organization|origin|pain|passage|passenger|personality|phenomenon|philosopher|philosophy|physics|plenty|politician|politics|popularity|presence|profit|project|proof|property|proportion|proverb|psychologist|quantity|reaction|region|religion|remark|reputation|revolution|reward|row|security|self|shift|shortage|sight|significance|skin|soil|soldier|solution|statement|status|stock|strength|substance|sum|survey|survival|talent|theme|thought|threat|tongue|tradition|treatment|tribe|trust|union|vehicle|victim|violence|virus|vision|vocabulary|wealth|wisdom|witness|youth|accurate|actual|alike|anxious|appropriate|asleep|attractive|awake|biological|bored|brief|capable|chemical|civilized|comfortable|complicated|conscious|constant|contemporary|contrary|convenient|creative|critical|curious|current|dependent|distant|domestic|dramatic|dull|eager|educational|effective|efficient|elderly|emotional|empty|engaged|enormous|entire|evil|extra|extraordinary|extreme|fair|FALSE|fat|favorite|female|financial|firm|former|friendly|fundamental|gentle|global|harmful|historical|honest|immediate|independent|intellectual|intelligent|internal|junior|latter|literary|medium|military|mysterious|narrow|nearby|negative|nervous|nuclear|opposite|patient|pleasant|polite|positive|potential|previous|primary|primitive|proper|proud|rare|reasonable|remarkable|responsible|rough|rural|senior|sensitive|severe|significant|silly|slight|smart|solid|specific|stupid|sudden|suitable|superior|technical|terrible|tiny|tough|typical|unique|universal|unknown|unusual|upset|urban|useless|valuable|visible|vital|wealthy|welcome|well-known|willing|absolutely|alive|apart|closely|constantly|directly|entirely|fairly|forever|fully|gradually|largely|necessarily|nevertheless|normally|obviously|occasionally|possibly|properly|rapidly|seldom|slightly|somehow|somewhat|surely|totally|unfortunately|virtually|widely|wherever|despite|unlike|acknowledge|adjust|advise|amuse|analyze|assure|astonish|beg|bend|blink|bow|broadcast|burst|bury|capture|cease|celebrate|characterize|cling|commit|confine|confirm|confront|constitute|convert|cultivate|cure|dare|delay|deliver|depress|devise|diminish|disagree|discourage|dominate|dwell|eliminate|embarrass|endure|ensure|equip|evolve|exhaust|exhibit|fascinate|float|fold|found|fulfill|gaze|generate|grasp|guarantee|guard|illustrate|imitate|impose|inclined|industrialize|inspire|interfere|interrupt|investigate|justify|leap|melt|misunderstand|neglect|nod|offend|originate|overlook|owe|pour|pray|proceed|protest|rank|relieve|request|resist|resolve|restrict|retain|review|ruin|scare|scatter|scream|secure|specialize|spoil|strengthen|substitute|suppress|swallow|sweep|trace|undergo|urge|wander|weigh|whisper|yell|absence|accent|acceptance|access|acquaintance|affection|aggression|alarm|ambition|appetite|application|appointment|arrangement|athlete|avenue|band|border|burden|campaign|candidate|cash|category|cave|cell|charm|colleague|colony|committee|companion|comparison|complaint|complexity|composition|confusion|construction|contract|convention|courage|crash|crew|critic|description|dialect|dignity|disadvantage|dispute|division|divorce|document|ecology|economics|editor|emotion|emperor|enterprise|enthusiasm|equality|era|exception|executive|expense|explosion|extinction|facility|fairy|flame|fortune|foundation|frontier|fund|funeral|fur|furniture|garbage|gene|globe|grave|ground|harmony|harvest|honor|hunger|immigration|impulse|incident|infant|inhabitant|injury|insect|insight|instinct|institution|instrument|insurance|introduction|investment|liberty|limitation|load|location|logic|lord|lung|luxury|mail|mammal|mineral|minority|mood|motive|myth|neighbor|nerve|obligation|orbit|output|owner|participant|passion|patience|perception|perspective|pile|pioneer|poison|portion|possession|preference|prejudice|privilege|profession|pronunciation|prospect|punishment|pursuit|ray|recognition|reference|reflection|relief|requirement|resident|ritual|root|sacrifice|scholar|seed|servant|shade|shame|shelter|shore|similarity|site|specialist|statistics|steam|strip|stuff|suburb|tale|telescope|tension|territory|text|tide|tip|tone|traffic jam|tragedy|trail|trait|transportation|trap|treasure|trial|trick|unemployment|version|virtue|volunteer|voyage|wage|weapon|Westerner|absolute|abstract|accustomed|additional|adequate|aggressive|amazing|annual|apparent|artificial|Atlantic|atomic|awful|based|brilliant|calm|casual|civil|classical|definite|delicate|democratic|desirable|dirty|distinct|elaborate|electrical|elementary|equivalent|evident|exact|excessive|external|frequent|generous|genuine|grand|guilty|identical|inevitable|inferior|initial|inner|intimate|invisible|keen|latest|legal|liberal|located|logical|long-term|massive|mature|mechanical|minor|mutual|numerous|odd|overwhelming|painful|passive|peculiar|permanent|plain|precious|precise|precisely|prime|principal|profound|racial|rational|raw|relative|reliable|remote|routine|rude|satisfactory|sensible|spare|spiritual|steady|strict|subtle|sufficient|tremendous|tropical|ultimate|uncomfortable|unexpected|unlikely|unpleasant|verbal|visual|widespread|aloud|altogether|barely|commonly|consequently|deliberately|effectively|essentially|firmly|increasingly|literally|practically|primarily|readily|regardless|regularly|roughly|socially|steadily|traditionally|undoubtedly|whereas|beneath"

TEXTBOXADDR = 0xA098E
PROGBARADDR = 0x110C6A

sysfont 17
split origdic,"|",dic
prog = 0
repeat
if prog > 299 : break
last = "HELLO SECCON"
sendmsg TEXTBOXADDR,0xC,0,last
await 0
repeat length(dic)
sendmsg TEXTBOXADDR,0xC,0,dic(cnt)
sendmsg PROGBARADDR,0x408
if  prog != stat: prog = stat: title "Q."+stat+" - HIT: "+dic(cnt): break
loop
loop
title "DONE."

 

使い方としては TEXTBOXADDR と PROGBARADDR にウィンドウハンドルの値を与えて実行すれば、
あとは3分程度ほったらかして置くだけで答えが表示されています。

仕掛けとしては、

1. テキストボックスに WM_SETTEXT (0xC) メッセージを送り、任意のメッセージで初期化する。
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms632644(v=vs.85).aspx

2. テキストボックスに取得した辞書の単語を一つ取り出して送る。

3. プログラムバーに PBM_GETPOS (0x408) メッセージを投げて現在の進捗を調べる。
https://msdn.microsoft.com/en-us/library/windows/desktop/bb760830(v=vs.85).aspx

4. 進捗が 299 を超えていればソルバを終了する。

というような流れです。

 


Appendix.

じゃ、どうやって守ればいいのというところですが・・。
私もプレイヤーですので詳しく書くと色々と対策されそうなのでボソボソッと。
(でももう、聞かれたら答えようかなとも思ってます。。

たとえば今回私が使用した SendMessage 系は
Windows の昔ながらのコンポーネントが問題で使用されていた為に使えたというところがあり、
そうでなければ防げたのかなとも。

あとは、メモリに展開したデータをそのままにしておくというのも、あんまり・・と思ってみたり。
それ以外にも気になった点はいくつかありました。

・・・時間が出来たら、私がもし作問者側ならどう対策しよう・・というのを実験してブログ記事を書いてみたいところです。


そんなこんなで、久しぶりに CTF でワイワイした、そんな2日間(?)でした。
(そんなわけで、 CTF Advent Calendar 2015 の記事にもしてみました。

SECCON 北陸大会(富山)に参加してきた


どうも wasamusume で旗を全力で振っている、みむらです。

2432100

そういえば前回の SECCON CTF って
香川でしたっけか。

前回は強行スケジュールでしたが、今回はホテルでゆっくりと。

そんなわけで、 wasamusume として SECCON 北陸大会に参加してきました。

一緒に参加したあたがわさんも記事を公開されていますので、こちらもどうぞ。:
SECCON 2013 北陸大会参加  あたがわの日記

2013/12/10 03:20 追記:
また、公式ウェブサイトにてスコアが公開されたようですので、
記事の最後に掲載しました。

 

今回も長くなりそうですんでこの辺で分割しておきます。
(続きは「続きを読む」より)

続きを読む

SECCON CTF 第一回 全国大会に参加してきました。


WP_000101

どうもみむらです。

先日、自分の通っている東京電機大学にて SECCON CTF 全国大会が開かれ、
そこに wasamusume として参加してきました。

九工大, 筑波大, NAIST, IISEC と予選が計4回実施されたわけですが、
そのうち、IISEC (横浜) での大会において優勝し、今回全国大会に参加してきたという感じです。

参考資料:

パケット解析にクルシミマス? SECCON横浜大会開催 – @IT
http://www.atmarkit.co.jp/ait/articles/1212/26/news026.html

SECCON CTF 横浜大会に行ってきました – みむらの手記手帳

 

結果は2位。

本当に僅差で、かなり悔しいけれど、
一方でここまでよく行ったなと、今結果を見て思いますね。

http://www.seccon.jp/2013/02/blog-post_26.html

image

内訳:

image

うむむ。。

 


大会ルール:

このへん参照。
http://www.phdays.com/ctf/king/

“King of The Hill” というらしい。

今回の大会の感じから簡単に書くと、

最初はウェブアプリなり何なり、そのサーバ上で動いているやつの脆弱性を突いてフラグを取る。
(この辺は、予選の時と同じような感じ。

その後、自分のチームのフラグワード(15分ほどで書き換わる)をサーバの指定された所に書き込んで、
あとは更新されたら更新して、相手のチームがフラグをとれないように、書き込めないようにいろいろと細工する。

上のランキングでは、
「サブミット」となっているのが脆弱性を突いてフラグを取って、得点サーバに送信して得られたポイントで、
「フラッグ」となっているのが、サーバに自分のフラグワードを書き込み続けた時間に対してのポイント
になっています。

フラッグについては更新される毎に書き込めているかを得点サーバからチェックされ、
書き込めていると判断されたチームに対して、解けているチーム数に応じた得点がその都度付与されます。

 

・・・だいたいこういう感じの攻防戦でした。


チーム構成:

かーみーさん, あたがわさん, Dec さん, ゆったんたん, Cookie-s (こおしいず) さん。 あと私。

横浜の際のメンバ構成をそのまま変えずに参加しました。

 

チーム名は wasamusume

こういうことを言われたりするのですが、
その辺に関しては、 “ SECCON CTF 福岡大会に参加してきた “ あたりの記事を見てください。

わかる人にはわかるとおもいます。。

 

あと、チームリーダーだったんですが、
主に仕事したのは雑用と、メディア対応と、幼女対応(重要, 大事)
だったよーな。。

あめ玉を頂いて、そしてスカイツリーがすごいということを伺いました。
大会中ってみんなピリピリしてるんですが、あの方のおかげで和みました。


Writeup:

すでにチームのメンバがいくつか書いていますので、
そちらを先にご覧ください。

第一回 SECCON CTF 全国大会に参加してきました! – falcon071011.log

SECCON CTF全国大会へ行って来ました – writeup  – cookies.txt .scr

SECCON 全国大会参加 – あたがわの日記

今回はチーム全員が協力して問題に取り組むという形であり、
この問題は誰、というような解き方をしていません。

従いまして、断片的になりますことご了承ください。

 

Mercury:

Stage1:

JPN, Eng というプルダウンメニューがあり、選択すると文字が出る。

ディレクトリトラバーサルの脆弱性突くもの。
NULL 文字を表すのに “%0” ではなく、 “%00” と表記すべきというところに気づくのに遅れたのが、まず反省点。

hoge と入力すると、 hoge.txt を見に行くことと、 stage2 というディレクトリを見つける。

ゆったん, こおしいずさんの2人が
“ stage2/.htpasswd%00 “ をやってパスワード情報の書かれたファイルを取り出し、
John The Ripper において平文情報に戻す。

後はその情報を元にアクセス。

 

Stage2:

SQL クエリを投げた結果が一覧で表示される。ただし、パスワード部分は “ * “ に置換されている。

SQL Injection を突くもの。
同一のレコードにパスワードが平文で記述されているため、
UNION でくっつけて 平文表示されている領域に表示させるようにすれば出てくる。

この辺も高校生コンビが UNION して結果を見せてくれた。

パスワードに /stage3xyz/ とあり、そこにアクセス。

 

Stage3:

画像をアップロードするアップローダー。

index.php と *.jpg (だったかな)が許可されていることがエラーからわかる。
適当に、 exec 関数を呼ぶ php ファイルをアップロードするとちゃんと動く。

find コマンドを実行させてディレクトリ構造を調べると、
/home/stage4 というディレクトリがあることに気づく。

同時に、 /var/www/html/  に FLAG というファイルがあることもわかる。

 

しばらく悩んだ後、
私「かーみーさん、 /home/stage4/.ssh/ にアクセス用の鍵書き込め無いかね?w」

ってことで、かーみーさんの Linux 環境でキーを作成、 PHP で echo 使って書き込む。

=> \書けた/ => \アクセスでけた!!/ => \なんかキー出た!/ => ウォッシャアアア

ということでそれを送信して得点。

 

Stage4:

SSH でつないでもすぐに切られてしまうため、どうしようという状態に。

私「SCP だったらつながるんでね?」
かーみー「えっ・・?」

ということで、 WinSCP つかって SCP モードで接続。  => \一覧出てきた/

/etc/sudoers を見ると、 stage4 から stage5 に /bin/vi をシェルとして上がれるよ! とあったので、
そこから vim を使っていかにしてフラグを書き込むかに悩み。

(注: /bin/vi とありますが、中身は vim 7.x でした。

 

私はそれまで知らなかったんですが、 引数でもいろいろとできるんですね。 vim すげー。

 

vim で素直に追記しようとすると、「swap ファイルが残ってるけれどどうすんの!」と聞かれて、
それどころじゃないよ! とやっている間に SSH が切られてしまう。

いろいろとやって、

# sudo -u stage5 /bin/vi "+:! echo FLAG >> /var/www/html/FLAG"

これで書き込めることがわかる。
ということで、緑の wasamusume さんフラッグポイント獲得 (voice: 児玉清 or 博多華丸

 

 

Neptune:

(02/28 修正: Uranus ではなく Neptune でした。

あたがわさんから “.backdoor” という名前の x86 バイナリを頂く。IDA に投げ込む。

“2つの引数取るよ!”  “一つ目は ‘IamTOM’ だよ!!” と
アセンブラコードさんが、私に超絶アピールしていたので、その旨をあたがわさんに伝える。

 

 

なんかこんなこと言われましたが、違うんですよ! アセンブラコードが(ry

 

・・・・変なこと書くと、ますます怪しい人認定もらうので黙っておきます。

挙動としては、 引数を2つ取るかどうかを判定し、
取るなら1つめが “IamTOM” かどうかを判定する。

この2つが正しければ、2つめの引数を system 関数へ渡すという流れになっていました。

参考資料: http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/system.3.html

 

flag 書くには特定のユーザ権限が必要なのですが、 この .backdoor というファイルを持っているユーザが、
flag を持っているユーザと同じで、
このプログラムで命令を実行すると、ファイルを持っているユーザ権限で動くため、
flag ファイルを書き込める、と。 そんな感じ。

 

あとは、あたがわさんがサーバ監視して、他のチームがやってくるのをニヤニヤ。

それこそ、城に侵入して天守閣まで上り、敵が攻め入れずにがんばっているのをニヤニヤ眺めているような。

 

 

Jupitor:

Windows XP 上に置かれた anhttpd と、その他のプログラムを組み合わせる問題。
私が一番力を入れてやっていた問題ですが、解けませんでした。。

MS08-067 の脆弱性が残った XP だったようで、そいつで侵入できたらしいです。

加えて、大会中に RDP 接続を行ってごにょごにょされたり、 shutdown コマンドが実行されたりして、
最終的にシャットダウン状態になって終了まで復活しませんでした。 しょぼん。。

自宅に戻ってから、 Armitage を使ってごにょごにょ。

この辺も、チーム mofupp さんがやった形跡が見られたんかなー。んー。

 

Mars:

2日目の後半から参加。( Jupitor を落とされたので )

私「どんな感じ?」
Dec さん 「ここに打つと、コマンドが実行されるんだけど、結果がかえってこないんよー。」
私「 Dec さん、 メールサーバー立てたら帰ってくるかな・・?w」

ってことで、私のマシンでメールサーバー立てる。

あたがわさんに 「ネット構成どんな感じになってるんー?」 と聞いていろいろと調べてもらったところ、
NAPT の下に各島が潜ってると思いきや、そんなことまったくないということがわかる。

・・・で、私のパソコン宛にメール来ないかなーと待ってみる => メール来ませんでした。

私「んじゃ、 netcat 使えないかなw」
Dec さん 「!?」

ということで、私のマシンで netcat を listen モードで立ち上げて待機。 => 結果が帰ってくる!

うぉし、これで行くぞ-!!! とやっていたんですがタイムアップ。

 


参加してみて:

今回のチームは、大変すばらしいチームであったと思います。

ノリがよく、和気藹々として、それでいて技術力がある。
これほどすばらしいチームというのも、他にないのではないかと思います。

チームメンバが書いているブログを見てみますと、
wasamusume のリーダーやってよかったなと思うわけです。

 

今回の全国大会で SECCON CTF は今年度分の一つの区切りということになるかと思います。

今回協力して頂いたチームメンバ以外にも、
九州大会、筑波大会で協力を頂いた方がいます。

皆さんの協力や応援があり、全国大会でこのように接戦となるような結果を収められたというのは、
チーム wasamusume としていい結果だったのではないかと思います。

本当にありがとうございました。

勿論、多くの反省点や1位をとれなかったという点がありますが、
これは来年度版の SECCON CTF があれば、そこでまた再挑戦できたらなと思っております。

各地で予選が開催される際は、また声を掛けるかと思いますが、
その際は、もしよろしければご協力頂けたらと思います。

 

そして、他のチームの皆様や運営に関わった皆様、
スポンサーの皆様等々をはじめとする関係者の皆様に感謝の意を申し上げます。

 


最後に:

硬い文章で終わらすってのは、どーも wasamusume っぽくないので。

私のムチャぶりに対応して頂いたチームメンバに謝罪しつつ。

そして、その場のノリで 私がくすぐって、くすぐられた方へ。
・・・こればっかりは反省してないので、またやります(ぉ

 

来年度、また SECCON があれば、このメンバをベースにまた招集を掛けたいですね。

SECCON CTF 横浜大会にいってきました


WP_000511

みむらです。 SECCON CTF 横浜大会に行ってきました。

http://www.seccon.jp/p/201212yokohama.html

昨年の12月22日に行われ、会場は実にクリスマス+リア充 の空間で満ちあふれており、
私のような者が居ていいのだろうかと思いましたが結果は上記のとおり。

 

・・にしても、この記事が12月に書き始めて、2月まで下書き状態で保存されていたとか言えない。

 

チーム名は前回のつくば大会同様 「wasamusume」としました。

前回と違う点としては、

1.チームリーダーがなぜか私になってる。
2.ておくれ要因を排除した。

というところでしょうか。ネタを前回よりも、さらに取り除きました。

 

今回のチームメンバは、
私、かーみさん、あたがわさん、Decさん、cookies さん、ゆったんさんの計6人。

今回はメンバが大変すばらしい方々が集まったことに加えて、
問題の特性がチームの特性と合っていたようにもおもえます。

また、初回参加時にはチームメンバだった「わさお」が、
知らないうちに他のチームで参戦することになっていて、我々が 「wasamusume」なんて名前でいいのかな
とか思いましたが、やっぱり結果オーライでしょう。ここは。

 

解いていて、いままでと違うなと思ったのは、
やはりスコアの遷移でしょうか。

執筆時点ではスコアに関する情報が出ていませんので難しいところですが、
過去2回の大会では「最初の出だしはいいが、後で追い抜かれて追い越せない」という感じでした。

今回はバイナリ系問題に時間がかかり(ごめんなさい)前半は Web な皆さんに助けられました。

そのような中で、過去と同じ「最初はいい、途中で抜かれる」という形ができ、
やばい!と思ったとき、バイナリ系の問題が解け、その時同時に呪縛からも抜け出せたような気がします。

 

CTF 会場としては、すでに述べてはおりますがクリスマスクリスマスしており、
非リア充を寄せ付けない、まさに 「こんなところでCTFといてるばあじゃない」 というような。

BGM にはクリスマスソング、もしくはそれに関連したクリスマス中止ソング。
あとは “うなぎのきもち” になることを強要(?)されたりと、前回2回の大会とは趣が違うBGM で、
私にとってはむしろ作業しやすい感じだったようにもおもいます。

 

記事が長くなりそうですのでいったんここで切りますね。

続きを読む