Description
Run this Python script to get the flag.
Setup
Download runme.py from the challenge page.
Solution
- Step 1Run the scriptExecute runme.py with the Python 3 interpreter. The script prints the flag directly to stdout -- no additional input is needed.python3 runme.py
Learn more
Python is an interpreted language -- scripts are not compiled to native machine code in advance but are read and executed line by line by the Python interpreter. Running a script requires explicitly invoking the interpreter:
python3 runme.pytells the shell to start the Python 3 interpreter and pass it the file as input.The distinction between
python3andpythonmatters: on many modern Linux and macOS systems, thepythoncommand points to Python 2 (now end-of-life), whilepython3explicitly invokes Python 3. Always usepython3unless you know the script requires Python 2.On Unix-like systems, a script can be made directly executable by:
- Adding a shebang line at the top:
#!/usr/bin/env python3 - Granting execute permission:
chmod +x runme.py - Running it directly:
./runme.py
The shebang (
#!) tells the kernel which interpreter to use for the file. CTF scripts often lack this, requiring you to invoke the interpreter manually -- which is always safe and explicit. - Adding a shebang line at the top:
Flag
picoCTF{...}
The simplest possible challenge -- Python scripts must be explicitly executed with the interpreter; they do not run on their own by double-clicking in most CTF environments.