Diese CTF Challange heißt python wrangling und geht darum, Python Scripte über die Kommandozeile zu starten und mit Argumenten zu versehen. Für diese Challenge musst du das Python-Script ‚ende.py‘, eine verschlüsselte Datei mit dem Namen ‚flag.txt.en‘ sowie eine Passwort-Datei mit dem Namen ‚pw.txt‘ herunter laden. Ziel ist es, das Python Script über die Kommandozeile aufzurufen und ihm mit Hilfe des Passwortes die entschlüsselte Flag zu entlocken.
Wenn man das Script von der Kommandozeile aus ohne irgendwelche Argumente aufruft, bekommt man einen Hinweis, wie das Script zu benutzen ist:
$ python3 ende.py
Usage: ende.py (-e/-d) [file]
Lass uns versuchen, das Script in der vorgeschlagenen Weise aufzurufen. Gehen wir davon ausm dass die Option ‚-e‘ für ‚encryption‘ also Verschlüsselung und die Option ‚-d‘ für ‚decryption‘ also Entschlüsselung steht.
$ python3 ende.py -d flag.txt.en
Please enter the password:
Wir werden dazu aufgefordert, ein Passwort einzugeben. Nun könnten wir die Datei ‚pw.txt‘ natürlich einfach in einem anderen Fenster öffnen und den Inhalt der Datei per Copy/Paste einfügen. Ich schlage stattdessen vor, den Inhalt der Datei direkt per Pipe an das Python Script zu übergeben. Unter Linux kann man sich den Ihnahlt einer Datei mittels dem Befehl ‚cat‘ anzeigen lassen. Zudem gibt es den ‚|‘ (pipe) Operator, um die Ausgabe eines Befehls direkt als Eingabe für einen anderen Befehl umzuleiten. Um nun also die Flag zu erhalten, können wir einfach die folgende Zeile in die Kommandozeile eingeben:
$ cat pw.txt | python3 ende.py -d flag.txt.en
Please enter the password:picoCTF{flag}
Wir haben die entschlüsselte Flag mit einer einzigen Eingabe auf der Kommandozeile erhalten!