st98 の日記帳


[ctf] InnoCTF International 2019 の write-up

7 月 13 日から 7 月 14 日にかけて開催された InnoCTF International 2019 に、チーム zer0pts として参加しました。最終的にチームで ??? 点を獲得し、順位は得点 ??? チーム中 ??? 位でした。うち、私は 7 問を解いて ??? 点を入れました。

他のメンバーの write-up はこちら。

以下、私が解いた問題の writeup です。

Web

Robots (???)

I need your clothes your boots and your motorcycle (URL)

与えられた URL にアクセスすると Hello WORLD! とだけ表示されました。

問題名から robots.txt が存在していると推測して /robots.txt にアクセスすると、以下のような内容が表示されました。

Disallow: /*/super-secret-admin-panel

super-secret-admin-panel にアクセスすると、以下のようなログインフォームが表示されました。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Авторизация</title>
</head>
<body>
    <form action="login.php" method="post">
        <input type="text" placeholder="Login" name="login">
        <input type="password" placeholder="Password" name="password">
        <input type="submit">
    </form>
</body>
</html>

ログインフォームといえば SQL インジェクションです。ユーザ名には適当な文字列を、パスワードには ' or 1;# を入力して送信するとフラグが表示されました。

InnoCTF{ZzXdOZzsNnTNDHhIGiiAFnjCfmLMOAlX}

Back in time (???)

That’s why you need to study history (URL)

与えられた URL にアクセスすると、以下のような HTML が返ってきました。

<!DOCTYPE html>
<html lang="en">

    <head>

        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Giant Internet Technologies</title>
        <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:400,300,100,100italic,300italic,400italic,700,700italic">
        
        <link rel="stylesheet" href="/assets/bootstrap/css/bootstrap.min.css">
        <link rel="stylesheet" href="/assets/css/animate.css">
		<link rel="stylesheet" href="/assets/css/form-elements.css">
        <link rel="stylesheet" href="/assets/css/style.css">
        <link rel="stylesheet" href="/assets/css/media-queries.css">
        <link rel="shortcut icon" href="/assets/ico/favicon.png">
        <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/assets/ico/apple-touch-icon-144-precomposed.png">
        <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/assets/ico/apple-touch-icon-114-precomposed.png">
        <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/assets/ico/apple-touch-icon-72-precomposed.png">
        <link rel="apple-touch-icon-precomposed" href="/assets/ico/apple-touch-icon-57-precomposed.png">

    </head>

    <body>

        <!-- Coming Soon -->
        <div class="coming-soon">
            <div class="inner-bg">
                <div class="container">
                    <div class="row">
                        <div class="col-sm-12" style="margin-top:15%">
                            NOT A FLAG
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <script src="/assets/js/jquery-1.10.2.min.js"></script>
        <script src="/assets/js/jquery.backstretch.min.js"></script>
        <script src="/assets/js/jquery.countdown.min.js"></script>
        <script src="/assets/js/wow.min.js"></script>
        <script src="/assets/js/teamscripts.js"></script>
    </body>

</html>

背景には Git for Windows のロゴが表示されています。Git 関連の問題であると推測して .git/ にアクセスすると、HEADCOMMIT_EDITMSG 等のリポジトリの情報が格納されているファイルやディレクトリの一覧が表示されました。

wget -r http://(省略)/.git/ でこれらのファイルをまとめてダウンロードします。git log -p | grep Inno でコミット履歴の中を探すとフラグが得られました。

$ git log -p | grep Inno
-InnoCTF{zPeEhoimGcNjgaOWQmnUZxlaSsadJMqQ}
+InnoCTF{zPeEhoimGcNjgaOWQmnUZxlaSsadJMqQ}
InnoCTF{zPeEhoimGcNjgaOWQmnUZxlaSsadJMqQ}

BGs (???)

Can you check if this site is hiding something? (URL)

与えられた URL にアクセスすると、以下のような HTML が返ってきました。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Котики</title>
	<link rel="stylesheet" href="style.css">
</head>
<body style="background: url(../assets/img/backgrounds/2.jpg) no-repeat; background-size: 100%;">
</body>
</html>

ここで読み込まれている style.css は以下のような内容でした。

body {
	background: url(LvtBqpbSqjvGCLjdAWzgccBWDIgHTbVs.png) no-repeat;
}

CSS ファイルで指定されているスタイルより style 属性で指定されているスタイルが優先して適用されるので、background: url(LvtBqpbSqjvGCLjdAWzgccBWDIgHTbVs.png) no-repeat; という記述は意味のないものになってしまっています。

LvtBqpbSqjvGCLjdAWzgccBWDIgHTbVs.png を開くとフラグが書かれた画像が表示されました。

InnoCTF{afhgmTHeqAWUZUwlKIHFNPhRuuPqBIng}

Cool Style (???)

Look at my styled website! (URL)

与えられた URL にアクセスすると、以下のような HTML が返ってきました。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>	My first site </title>
	<link rel="stylesheet" href="../assets/css/ImYZFSkiVugcEWTPoTxdj.css">
<link rel="stylesheet" href="../assets/css/nsSXpZKZdshcPtXU.css">
<link rel="stylesheet" href="../assets/css/nrilLfYGPrjUVFuDQ.css">
<link rel="stylesheet" href="../assets/css/oCgixdRdJVzZMecY.css">
<link rel="stylesheet" href="../assets/css/CZNfoZDbVizxJvPUkVRl.css">
<link rel="stylesheet" href="../assets/css/TXFPVbdMwrMxYTxXg.css">
<link rel="stylesheet" href="../assets/css/FPIMWIiomHXrRidGC.css">
<link rel="stylesheet" href="../assets/css/{chHTfrXajhrfCNqU.css">
<link rel="stylesheet" href="../assets/css/SedJZakJuDhyDPKEbe.css">
<link rel="stylesheet" href="../assets/css/FWwjPsYfqBYPilMY.css">
<link rel="stylesheet" href="../assets/css/oNFawIjgJIckuMQFtmK.css">
<link rel="stylesheet" href="../assets/css/YvASvYMqLkhtcFrit.css">
<link rel="stylesheet" href="../assets/css/QRNKbSPAyWIlfvBlkj.css">
<link rel="stylesheet" href="../assets/css/DMklHksgxIYQMark.css">
<link rel="stylesheet" href="../assets/css/EiVAGSsBSapVieQVMjlzA.css">
<link rel="stylesheet" href="../assets/css/IjdqiNzCsesZBMJtNvq.css">
<link rel="stylesheet" href="../assets/css/aebmKLECaLKwTCkGFTux.css">
<link rel="stylesheet" href="../assets/css/IytAotyWzPkyagkD.css">
<link rel="stylesheet" href="../assets/css/pjmIhPqyGsuJQxfGxGhJo.css">
<link rel="stylesheet" href="../assets/css/trIOtzyHkVedgFkU.css">
<link rel="stylesheet" href="../assets/css/SWrdwDFKGWYbgiBSxqPx.css">
<link rel="stylesheet" href="../assets/css/dzxXGpyzrLygZCxY.css">
<link rel="stylesheet" href="../assets/css/XgOGGmpWTDZQBrSOYE.css">
<link rel="stylesheet" href="../assets/css/tQzZgFxlnkWCnGbkgTw.css">
<link rel="stylesheet" href="../assets/css/zJQfcLndpqhmPVcwmJu.css">
<link rel="stylesheet" href="../assets/css/ZcKRmFhGjcwTqkxxy.css">
<link rel="stylesheet" href="../assets/css/svZaEerAGLKFWieVfTAr.css">
<link rel="stylesheet" href="../assets/css/ezayiEFQmffTPXHexp.css">
<link rel="stylesheet" href="../assets/css/NVxRfDzCykwSCPSHKhl.css">
<link rel="stylesheet" href="../assets/css/uDEvdDRYgyYhUNLqCXPS.css">
<link rel="stylesheet" href="../assets/css/nAjapDyPboYSShglLOky.css">
<link rel="stylesheet" href="../assets/css/QFpZXgoEXKpDaALurvyI.css">
<link rel="stylesheet" href="../assets/css/uvhUkHfNMDUUAnru.css">
<link rel="stylesheet" href="../assets/css/gHKnWTxDZkRQkDKK.css">
<link rel="stylesheet" href="../assets/css/QWoxqerDGbjyoPSEKO.css">
<link rel="stylesheet" href="../assets/css/yGRheLKZOEXBCjxUbcrW.css">
<link rel="stylesheet" href="../assets/css/IAFQgTMmicphyyUeqqm.css">
<link rel="stylesheet" href="../assets/css/CiWBpIpihRBUOHjeWG.css">
<link rel="stylesheet" href="../assets/css/uaFqAAsWbGIQhsdzHv.css">
<link rel="stylesheet" href="../assets/css/vpndcdMQAfhGVfcKaKjP.css">
<link rel="stylesheet" href="../assets/css/}gSlONKovZIDohUxuU.css">

</head>
<body>
	<style>
		body {
			background-color: #fbaabf;
		}
		
		.smile {
			width: 20%;
			margin-left: auto;
			margin-right: auto;
			display: block;
			margin-top: 15%;
		}
	</style>
		<img class="smile" src="../assets/img/social-icons/ball.jpg">
</body>
</html>

DevTools の Network タブを開いてみると、link 要素で読み込まれている CSS ファイルはすべて 404 が返ってきており、存在していないことがわかります。

CSS ファイルのファイル名をよく見てみると、{chHTfrXajhrfCNqU.css}gSlONKovZIDohUxuU.css など、A-Z a-z の範囲内にない文字は先頭だけにあることがわかります。各ファイル名の先頭文字だけを取り出して結合してみましょう。

DevTools の Console タブを開いて Array.from(document.getElementsByTagName('link')).map(e => decodeURIComponent(e.href.split('/').slice(-1)[0])[0]).join('') を実行するとフラグが得られました。

InnoCTF{SFoYQDEIaIptSdXtzZseNunQugQyICuv}

Crypto

Librarian skill (???)

Read between lines!

添付ファイル: ls.zip

ls.zip を展開すると 1984.txt Animal Farm.txt The Catcher in the Rye.txt という 3 つの 1kB に満たないテキストファイルと、cipher.jpg という以下のような暗号文が書かれた画像ファイルが出てきました。

1 48 53 53 138
13 69 123 2 103 151
23 15 99 102 46 28 76

3 つのテキストファイルのファイル名はいずれも小説の題名です。おそらく Book cipher でしょう。これらのテキストファイルを利用して 1 行ごとに復号してみましょう。

import glob

cs = [[int(x) for x in c.split()] for c in """1 48 53 53 138
13 69 123 2 103 151
23 15 99 102 46 28 76""".splitlines()]
fs = [[f, open(f).read().split()] for f in glob.glob('ls/*.txt')]

for c in cs:
  for f, s in fs:
    try:
      print(f, ''.join(s[x - 1][0] for x in c))
    except:
      pass
  print('---')
$ python solve.py
ls/1984.txt Hurry
ls/The Catcher in the Rye.txt Icllt
---
ls/1984.txt aPtmio
ls/The Catcher in the Rye.txt slowly
---
ls/1984.txt wttfttf
ls/Animal Farm.txt WiETagw
ls/The Catcher in the Rye.txt fmhwBiI
---

1 行目の暗号文は 1984.txt から Hurry、2 行目の暗号文は The Catcher in the Rye.txt から slowly という単語が復号できましたが、3 行目の暗号文はどのテキストファイルでもそれっぽい単号が出てきていません。

1 行目と 2 行目で使われていない Animal Farm.txt で復号した結果である WiETagw を使ってそれっぽいフラグを作り、スコアサーバに送信してみると正解であると表示されました。

InnoCTF{Hurry_slowly_WiETagw}

Misc

Prism (???)

Do you have a prism to take a closer look?

添付ファイル: prism.png

prism.png はやけにカラフルな QR コードの画像でした。

stegsolve.jar を使って赤緑青の 3 色を分離し、それぞれ QR コードリーダで読み取るとフラグが得られました。

$ zbarimg r.png
QR-Code:InnoCTF{X6HvXi
scanned 1 barcode symbols from 1 images

$ zbarimg g.png
QR-Code:KqCpxokF8s4zG9
scanned 1 barcode symbols from 1 images

$ zbarimg b.png
QR-Code:63CYAlzanDcW5}
scanned 1 barcode symbols from 1 images
InnoCTF{X6HvXiKqCpxokF8s4zG963CYAlzanDcW5}

Between Violent and Cocytus (???)

Look at this, it’s just an INFERNO!!

'&%$#"!=6;:98765.Rsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>Z<XW
VUTSRQPOHlkKDIHAe('=B;@?>=<;4Xyxwvutsrqponmlkjihgfe#"y~}|{zsxq7uWmlk1onmlkMi
b(IHGFEDCB^]\[ZYXWVONrRQJn10/.-,+*)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^
]\[ZYunmrqponmlkd*KJ`edcba`Y^W{UZSwWVUT6LpPINGFKDhH*@d'&<A:?>=<;:3W765432r0)
Mnmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:987SRQ3ONGLKDIHAe('CBA
@?>=<;4Xyxwvutsrqponmlkjih&%$#"!~}|{zs9ZYXWVUqponPlediha'r

どう見ても Malbolge のコードです。適当な処理系で実行させるとフラグが得られました。

InnoCTF{1m_proud_0f_U}
このエントリーをはてなブックマークに追加
st98.github.io / st98 の日記帳