picoCTF 2021 Python Wrangling Writeup

Ismail R.
2 min readOct 31, 2021

--

Python Wrangling is a General Skills challenge worth 10 points.

Description

Python scripts are invoked kind of like programs in the Terminal... Can you run this Python script using this password to get the flag?

This puzzle provides a Python script ende.py, a password in pw.txt, and a ciphertext flag.txt.en.

Solution

First, I read ende.py and made sure it was not malicious. This script is basic. After reviewing the source code and getting an idea of how it worked, I was comfortable with running it on my machine:

import sys

import base64

from cryptography.fernet import Fernet

usage_msg = "Usage: "+ sys.argv[0] +" (-e/-d) [file]"

help_msg = usage_msg + "\n" +\

"Examples:\n" +\

" To decrypt a file named 'pole.txt', do: " +\

"'$ python "+ sys.argv[0] +" -d pole.txt'\n"

if len(sys.argv) < 2 or len(sys.argv) > 4:

print(usage_msg)

sys.exit(1)

if sys.argv[1] == "-e":

if len(sys.argv) < 4:

sim_sala_bim = input("Please enter the password:")

else:

sim_sala_bim = sys.argv[3]

ssb_b64 = base64.b64encode(sim_sala_bim.encode())

c = Fernet(ssb_b64)

with open(sys.argv[2], "rb") as f:

data = f.read()

data_c = c.encrypt(data)

sys.stdout.write(data_c.decode())

elif sys.argv[1] == "-d":

if len(sys.argv) < 4:

sim_sala_bim = input("Please enter the password:")

else:

sim_sala_bim = sys.argv[3]

ssb_b64 = base64.b64encode(sim_sala_bim.encode())

c = Fernet(ssb_b64)

with open(sys.argv[2], "r") as f:

data = f.read()

data_c = c.decrypt(data.encode())

sys.stdout.buffer.write(data_c)

elif sys.argv[1] == "-h" or sys.argv[1] == "--help":

print(help_msg)

sys.exit(1)

else:

print("Unrecognized first argument: "+ sys.argv[1])

print("Please use '-e', '-d', or '-h'.")

Running this script with the provided password and ciphertext gives up the flag:

--

--

Ismail R.
Ismail R.

Written by Ismail R.

Early passion for computers led to a professional focus on aligning business with IT. Balancing academic and practical experience, especially in cybersecurity.

No responses yet