$ :(){ :|:& };:

$ :(){ :|:& };:

:: fork failed: resource temporarily unavailable

NeverLAN CTF 2018 Writeup

受験がようやく終了したので 2/24 04:00 JST — 2/27 09:00 JST に開催された NeverLAN CTF 2018 に Harekaze として参加しました.

凡そ1年ぶりのCTFで,引っ越し作業その他で忙しかったのですが合間を縫ってちょこちょこと解きました(CTFらしい問題は一問も解いていないですが)

結果は 47/816 位 で 800~1000/4410 点分を解きました.以下WriteUpです.

[scripting 100] even more basic math with some junk

The answer to this puzzle is, yet again, the sum of the values in the included file.

NOTE: If there's a space between two digits they're not part of the same value.
https://s3-us-west-2.amazonaws.com/neverlanctf/files/even_more_numbers_with_some_mild_inconveniences.txt

リンク先を辿ると以下のようなファイルが渡される.

2222689725896    2 47855705     3569292   ,
4074440    ,
77859765972   7318  ,7241533041280677     ,1167965   69376150    012131965722352   

...

5034653  0856660340    whoops, sorry about this 934446618092793    ,109180959633 982073795114   5973180181588360 ,87195  

以下を書いて終わり

$ curl https://s3-us-west-2.amazonaws.com/neverlanctf/files/even_more_numbers_with_some_mild_inconveniences.txt | ruby -e 'p `dd`.tr(","," ").split.map(&:to_i).sum'
>> 34659711530484678082

FLAG : 34659711530484678082

[Interweb 200] ajax_not_borax

Username と Password を要求するフォームが出てくる.ソースを見ると

...

// For element with id='name', when a key is pressed run this function
      $('#name').on('keypress',function(){
        // get the value that is in element with id='name'
        var that = $('#name');
        $.ajax('webhooks/get_username.php?username='+that.val(),{
        }).done(function(data){ // once the request has been completed, run this function
            data = data.replace(/(\r\n|\n|\r)/gm,""); // remove newlines from returned data
            if(data==MD5(that.val())){ // see if the data matches what the user typed in
              that.css('border', '1px solid green'); // if it matches turn the border green
              $('#output').html('Username is correct'); // state that the user was correct
            }else{ // if the user typed in something incorrect
              that.css('border', ''); // set input box border to default color
              $('#output').html('Username is incorrect'); // say the user was incorrect
            }
          }
        );
      });
...

パスワード入力欄の要素 #pass についてもajax先がwebhooks/get_pass.php?username= である以外はほぼ同じロジックのコードが記述されている.

/webhooks/get_username.php?username= から c5644ca91d1307779ed493c4dedfdcb7 という値が振ってくるので online の MD5 decrypter を用いると tideade であることが分かる. webhooks/get_pass.php?username=tideade にアクセスすると ZmxhZ3tzZDkwSjBkbkxLSjFsczlISmVkfQ== が降ってくる

$ echo ZmxhZ3tzZDkwSjBkbkxLSjFsczlISmVkfQ== | base64 -D
=> flag{sd90J0dnLKJ1ls9HJed}

FLAG : flag{sd90J0dnLKJ1ls9HJed}

[Interweb 200]Das_blog

Username と Password を要求するフォームが出てくる.ソースに

<!-- Development test account: user: JohnsTestUser, pass: AT3stAccountForT3sting -->

とあり,これらの情報を用いるとログインすることができる.トップページにアクセスすると次の画面になる.

f:id:taiyoslime:20180306195214p:plain

You have DEFAULT permissionsという文面から,Cookiepermissionsuser から admin にしてフラグ

FLAG : flag{C00ki3s_c4n_b33_ch4ng3d_?}

[trivia 50] I love tools…

What are these tools that are built into most browsers. One of its functions is to allow the user to inspect html elements on the webpage.

FLAG : Developer Tools

表記揺れに厳格であり,devtools, DeveloperTools, developer tools 等では通らず,また Safari では Web Inspectorと呼ぶこともありチーム内でも若干の混乱があった.また,私は他の問題からフラグの形式が flag{} であると思い込んでいたため暫く通らなかった.

[trivia 50] Yummy

These store small pieces of data sent from a website to the user's computer. This yummy sounding things are stored by the user's web browser while the user surfing the web. Answer is non-singular.

FLAG : Cookies

[trivia 100] Can you find it?

This Vulnerability was used for a major worldwide Ransomware attack. It was so bad it forced the software company to write a patch for end of life systems that they had stopped supporting years before the attack.

Flag will be the formal listing code

最近流行したランサムウェアというのは WannaCry で,サポート終了にもかかわらずパッチが提供されたというのは Windows XP のことだろうと容易に想像がつき,該当する脆弱性CVE-2017-0144 である.

FLAG : CVE-2017-0144

[trivia 100] Who knew?

This product had Highest Number Of "Distinct" Vulnerabilities in 1999

CVE Details にまとまったページが有る(初めて知りました):https://www.cvedetails.com/top-50-products.php?year=1999

FLAG : Windows Nt

[trivia 200] How far can you go?

パスワード付きZipファイルが渡される.与えられたパスワードで解答すると 1.txt2.zip(パスワード付き)が生成される.以下,$n.zip を解答すると $n.txt及び $(n+1).zip(パスワード付き)が生成され(n = 1 ~ 10),$n.txtの問題の答えが $(n+1).zip のパスワードという形式になっている,

1.txt

The password to the zip is the handle of the author.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The following was written shortly after my arrest...

                       \/\The Conscience of a Hacker/\/





                          Written on January 8, 1986
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

        Another one got caught today, it's all over the papers.  "Teenager
Arrested in Computer Crime Scandal", "Hacker Arrested after Bank Tampering"...

...

ハッカーの良心 (The Conscience of a Hacker)の全文が記載されている,書いたのは Loyd Blankenship であり,HNは The Mentor である.しかしこれでは通らず,原文に記述されている +++The Mentor+++ とすると通った

FLAG : +++The Mentor+++

2.txt

This club was the first to use the word "Hacker". The password to the next stage is the name of that club!

Happy Hunting!

ハッカーという言葉を初めて用いたのは (The Tech Model Railroad Club of MIT)http://tmrc.mit.edu/,通称 tmrc である,

しかし,正式表記である The Tech Model Railroad Club of MIT に加え,Tech Model Railroad ClubTech Model Railroad Club of MITtmrcTMRC 等,既存のtrivia問の形式であった,先頭大文字・空白有りのフォーマットで通らない.また,[trivia 50] Can you Name it? のみ CommonVulnerabilitiesandExposures という先頭大文字・空白無しのフォーマットであったため,それらを試してみても通らない.そもそもの答えを疑う等したが,結局全小文字・空白有り表記で通った.

FLAG : tech model railroad club

こういった作業に慣れていないため非常に時間がかかった.

3.txt

Before Hacking, there was this?

フリーキング(電話回線の不正使用)である.

FLAG : phreaking

4.txt

what about this toy made Phreakers love the toy in Cap'n Crunch Cereal in the 1960's

The password is the answer?

当時の電話通信はトーンダイヤル方式であり,回線接続のための信号に規定周波数の信号音を用いていた.そして,電話回線のTrunklineへの接続に用いられた周波数は2600Hzであり,Cap'n Crunch というシリアルのおまけであったおもちゃの笛が出すものと全く同じであったため,これがPhreakingに用いられたという経緯がある.

FLAG : 2600 hertz

当初 password の意味を取り違え wistle の方が答えになっているだろうという勘違いをしていた.

5.txt

Date of 2600 magazine issue that had the article "HACKING ON TELENET, It's as easy as 123456!"

検索すると 2600 magazine のバックナンバー一覧が出てくる:http://homepages.stmartin.edu/fac_staff/dprice/2600-voldx.htm

2600 Volume 1 Number 2 等のクエリで検索すると February, 1984 と書かれたそれらしい雑誌の表紙の画像が出てくる.

あとはどのフォーマットかをエスパーしてフラグ

FLAG : february 1984

6.txt

11 Year old Dade Muprhy chrashed 1,507 Computers that belonged to this orginization?

Dade Muprhy は 映画 Hackers の主人公であり,https://en.wikipedia.org/wiki/Hackers_(film)

In 1988, 11-year-old Dade "Zero Cool" Murphy is arrested and charged with crashing 1,507 computer systems in a single day and causing a single-day 7-point drop in the New York Stock Exchange.

とある.

FLAG : new york stock exchange

7.txt

Ellingson Mineral Company supercomputer.

6.zip に示した HackersWikipedia

Meanwhile, Joey, out to prove his skills, successfully breaks into "The Gibson", an Ellingson Mineral Company supercomputer.

とあることから,映画内に登場するスーパーコンピューターの名前が The Gibson であることが推察できる

FLAG : the gibson

8.txt

Shall we play a game?

WarGames という映画の一節である.このセリフを発話したのは "Joshua" と名付けられたコンピュータシステムであり,http://www.imdb.com/title/tt0086567/quotes より主人公の "David Lightman" と以下のような会話が 劇中でなされていることが分かる

Joshua: Shall we play a game?
David Lightman: [typing] Love to. How about Global Thermonuclear War?
Joshua: Wouldn't you prefer a nice game of chess?
David Lightman: [typing] Later. Let's play Global Thermonuclear War.
Joshua: Fine.

wargameswar gamesWarGamesJoshuajoshua では通らず,質問に応答する形として love to., Love to., how about global thermonuclear war? 等を考えていたがダメだったので諦めかけていたところ st98氏が通してくれた,

FLAG : global thermonuclear war

9.txt

What is this from?

I know you're out there. I can feel you now. I know that you're afraid... you're afraid of us. You're afraid of change. I don't know the future. I didn't come here to tell you how this is going to end. I came here to tell you how it's going to begin. I'm going to hang up this phone, and then I'm going to show these people what you don't want them to see. I'm going to show them a world without you. A world without rules and controls, without borders or boundaries. A world where anything is possible. Where we go from there is a choice I leave to you.

matrix という映画のエンディングのセリフであるらしい.

FLAG : matrix

10.txt

Your flag is

flag{W3lc0m3_2_th3_r4bb!7h0l3}

以上より FLAG : flag{W3lc0m3_2_th3_r4bb!7h0l3}

感想

  • フラグの表記揺れは本質でないのである程度は寛容であるべきだし,zipのパスワード等一意である場合はフォーマットがどのような形式であるかを明記(特に日付)するべきであり,そうでなくとも表記は少なくとも全ての問題で統一してほしい,
  • ということを考えていたら,PPPの https://github.com/pwning/docs/blob/master/suggestions-for-running-a-ctf.markdown に日付についての言及まで全てありました.
  • 何かしらの運営への連絡手段(irc等)が欲しかった.
  • 本当はこのWriteUpも英語で書くべきなんだろうけど対した問題も解いてないし気力が持たなかったので次の機会に頑張ります.