Web

Insigne CTF writeup PwnPeAuto

PwnPeAuto

10

We asked Jarvis to make our team's automobile section but Vision intervened and is disrupting the operation. Can you stop this civil war?

Challenge is at http://35.165.205.141:8002/

問題で提示されているURLを表示すると、下記ページが表示されます。ページ内にある各リンクを順に確認していきます。
no title

"About Us"のリンクをクリックすると下記のページが表示されます。flag.txtにフラグがあるという記載があります。

1

試しにhttp://35.165.205.141:8002/flag.txtを表示してみると、フラグが表示されました。

フラグは、
flag{Stup1dJ@rv!G@veM3Aw@y}

PlaidCTF 2017 writeup Pykemon

Pykemon

15 hours ago
Web (151 pts)

Gotta catch them FLAGs! 

Take this with you.

問題文のリンクは下図のようなPykemonを捕まえるゲームになっています。また、そのPythonソースコードもダウンロードできるようになっています。ソースコードを確認すると、Flaskで構築されたアプリケーションであることが分かります。
no title

まずは普通にゲームをやってみます。アイコンをクリックするとピケモンを捕獲できるようです。しかし、FLAG(旗のアイコン)はクリックしても、下図のように取得することができません。
1

pykemon.pyに、Pykemonクラスがありフラグが記載されています。run.pyのpcatch()関数で捕獲チェックしていますが、FLAGのrarityが0であるため絶対に取得することができないようになっています。
さらにrun.pyを見てみるとsession変数にRoomクラスのインスタンスを設定しているようです。Flaskではセッション情報をCookieに持たせているそうですので、ここからFLAGを取得できないかやってみます。

それではCookieを確認してみます。session変数が下記のように設定されています。
.eJztV0tvm0oU_isVay94mLRYyoa0zGDFVMY1r6qqYIYLmAEjY2JD5P_eA24cB8v2vZKzie4O5szre8w5M89c4DNWciOBH3DEr6J4zY2euaJOw2yZc6Ofv3YDbrVcZm9bnzkalmSVFOuk_X_mPgXciLNQXJBanYb2Og5spdJRHMM_C5C1oHhcuCLjw5nQUKTUvi3nOlafqG0sPWcSBeIw8h2z0RH829aK1MMI5mNEnEeuo248W6t1bD7paMxcUVl7s-N5tTLAaeSKsF5GmfegptQZF0FGIgpz6EguPDHmdUyXvr1luqbKvqgtfDyPiLhlnqM2j9H9PQdY44IbDe8GXO5n4QHYHLOVCxul032nPCHpxQ5FQk9jP6ZiG1v5q2RdwyrAeFnA9-s0vi3Enmg1j9JhgxVBcs7tdoMzlIsxCxKV9xFr_sJat1QSkVWeNCl1xHiAz2hmAX1qTB2DgSR8UKsJyay4pecY-t2XU-i5J24Lgq3Mi87DP-nUo-A1vnCHxzTIl2nwRFr6jip4mXuFivk3Y27m6-8TbP5jaErjf9Wq0FIMA5Gt35g1wfwB5mexB9NMt6q5OQPvOHgMq2tvSH0M5wIa0Stdm1xDgRmcDfoEorZnaQHej90MPIuUTMfjTkiKQNxaLSg24Ay4kWfLvO-MWXcGMrDNXuANyZScZNpaRyYI_S1ybTnVkVVRZO3PHzJkF-YjEqwhzqsXdpThqQn2m7pggDcdeuLvY4uUP2ZKuiw8yVgOTr5OVwopZKW3_geIoW2VAVKk47MAHo_pg1p74P3AHpdtunFn6t9xSg0ppSDISl17ExG0jSlmG-pMDmZRpFM6usHnqDgEezR07d9_7Gd-oeHuiv-xBXrKG8hl97fxvqjczvu6fGPvw1mnMXi7L1YSYIs9PqgNaWtCxhatWBRpKUFK6c2G0cyZRj7SwATbrgaAz-VubOt5rEItKKMAsQ3Uldc8388Chw2cY6PfoSfwPtZM32SEL5cFhk1J_4Ka_yBwu-CtBI42txT4w1wQ3ul-cH_7-8EHYfxOeB_K3e3NKYfJedcx431JMuDKZRaBZME3q4CuZUtTiM3aswX2mKgaVPTqQEN3XWvHaQ1QycjDBiSYAo1KRSQzDnKzDGcq5BmDh6oP_cayjoQnmr3cCCZRKwtIDLQrQpBNq0vZrtvoOfoOwR51XbvxVX_jVuUydZCqeXd2rYx9FLfK8vu4dS78_4C4wQPi1-DlKfubLKscXrwCXPFW7Xr8bvcHqwDZuA.C-8epQ.AEM0acIhD0NV5MEhWxp8dw2AOUY
 Cookieのsession変数の最初の.(ピリオド)の部分を、下記のようにデコードします。
$ python
>>> import zlib
>>> import base64
>>> cookie_str = "eJztV0tvm0oU_isVay94mLRYyoa0zGDFVMY1r6qqYIYLmAEjY2JD5P_eA24cB8v2vZKzie4O5szre8w5M89c4DNWciOBH3DEr6J4zY2euaJOw2yZc6Ofv3YDbrVcZm9bnzkalmSVFOuk_X_mPgXciLNQXJBanYb2Og5spdJRHMM_C5C1oHhcuCLjw5nQUKTUvi3nOlafqG0sPWcSBeIw8h2z0RH829aK1MMI5mNEnEeuo248W6t1bD7paMxcUVl7s-N5tTLAaeSKsF5GmfegptQZF0FGIgpz6EguPDHmdUyXvr1luqbKvqgtfDyPiLhlnqM2j9H9PQdY44IbDe8GXO5n4QHYHLOVCxul032nPCHpxQ5FQk9jP6ZiG1v5q2RdwyrAeFnA9-s0vi3Enmg1j9JhgxVBcs7tdoMzlIsxCxKV9xFr_sJat1QSkVWeNCl1xHiAz2hmAX1qTB2DgSR8UKsJyay4pecY-t2XU-i5J24Lgq3Mi87DP-nUo-A1vnCHxzTIl2nwRFr6jip4mXuFivk3Y27m6-8TbP5jaErjf9Wq0FIMA5Gt35g1wfwB5mexB9NMt6q5OQPvOHgMq2tvSH0M5wIa0Stdm1xDgRmcDfoEorZnaQHej90MPIuUTMfjTkiKQNxaLSg24Ay4kWfLvO-MWXcGMrDNXuANyZScZNpaRyYI_S1ybTnVkVVRZO3PHzJkF-YjEqwhzqsXdpThqQn2m7pggDcdeuLvY4uUP2ZKuiw8yVgOTr5OVwopZKW3_geIoW2VAVKk47MAHo_pg1p74P3AHpdtunFn6t9xSg0ppSDISl17ExG0jSlmG-pMDmZRpFM6usHnqDgEezR07d9_7Gd-oeHuiv-xBXrKG8hl97fxvqjczvu6fGPvw1mnMXi7L1YSYIs9PqgNaWtCxhatWBRpKUFK6c2G0cyZRj7SwATbrgaAz-VubOt5rEItKKMAsQ3Uldc8388Chw2cY6PfoSfwPtZM32SEL5cFhk1J_4Ka_yBwu-CtBI42txT4w1wQ3ul-cH_7-8EHYfxOeB_K3e3NKYfJedcx431JMuDKZRaBZME3q4CuZUtTiM3aswX2mKgaVPTqQEN3XWvHaQ1QycjDBiSYAo1KRSQzDnKzDGcq5BmDh6oP_cayjoQnmr3cCCZRKwtIDLQrQpBNq0vZrtvoOfoOwR51XbvxVX_jVuUydZCqeXd2rYx9FLfK8vu4dS78_4C4wQPi1-DlKfubLKscXrwCXPFW7Xr8bvcHqwDZuA"
>>> zlib.decompress(base64.urlsafe_b64decode(cookie_str+b"="*(-len(cookie_str) % 4)))
デコードして得た文字列の中から、"rarity": 0の部分がFLAGの情報になりますので、下記に抽出します。
(略)
            {
                "description": {
                    " b": "UENURntOMHRfNF9zaDFueV9NNGcxazRycH0="
                }, 
                "hp": 72, 
                "name": {
                    " b": "RkxBRw=="
                }, 
                "nickname": {
                    " b": "RkxBRw=="
                }, 
                "pid": {
                    " b": "RkxBRzcy"
                }, 
                "rarity": 0, 
                "sprite": {
                    " b": "aW1hZ2VzL2ZsYWcucG5n"
                }
            }, 
(略)
descriptionにフラグ値が記載されているはずなので、base64でデコードします。
フラグは、
PCTF{N0t_4_sh1ny_M4g1k4rp}
です。

 
 
記事検索
ギャラリー
  • TetCTF 2023 NewYearBot
  • UUT CTF writeup Find The Password
  • UUT CTF writeup The Puzzle
  • Hack Zone Tunisia 2019 writeup Microscope
  • Hack Zone Tunisia 2019 writeup Welcome
  • SwampCTF 2019 writeup Brokerboard
  • SwampCTF 2019 writeup Leap of Faith
  • SwampCTF 2019 writeup Last Transmission
  • CBM CTF 2019 writeup Long road
カテゴリー