pyjail wiki

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 の主要なアトム:

アトム機能
ŒVPython eval
ファイル読み込み
ŒṘrepr

攻撃ベクトル

  1. ŒV による直接的な Python 評価
  2. ファイル I/O アトムによるフラグ読み取り
  3. システムコマンド実行アトム (存在する場合)

Flag

jail{...}

References

  • jailCTF 2024 Official
  • Jelly Language Documentation