ンコソパトマトパソコン
初心者向けヒント: Jail とは
- AlpacaHack では現在、 Crypto, Pwn, Rev, Web の 4 つのカテゴリーを中心に出題し、それ以外の分野の問題は Misc カテゴリーに分類しています。
- この問題は Misc カテゴリーに属し、その中でも Jail と呼ばれる問題の一つです。
- Jail は SECCON 予選をはじめ、独立したカテゴリーとして出題されることもあります。
- Jail とは、「何かしら制限された実行環境(=jail)から脱出する」ことをテーマとします。
- 与えられた環境や制限が完全ではない点を突き、想定外の操作を達成できれば、フラグを得ることができます。
- 特に Python の言語仕様に関連する Jail 問題は Pyjail と呼ばれます。
初心者向けヒント: 最初のステップ
- スクリプトを読むと、入力が回文かどうかをチェックした後、その入力を
evalで実行していることがわかります。 flag.txtはDockerfileで./flag.txtに配置されます。- まず、この問題より簡単な「回文チェックの
assert文がない」条件で考えてみましょう。 - その場合、単に
print(open("flag.txt").read())を入力するだけで、フラグを読むことができます。 - 「どうしたら回文のペイロードを構成できるか」という点を意識しながら、Python の言語仕様を調べたり、手元で色々実験して挙動を確認したりしてみましょう。