Dieses Writeup geht darum, die Nice netcat Challenge auf picoCTF zu lösen.
Die Beschreibung verrät uns, dass „There is a nice program that you can talk to by using this command in a shell: $ nc mercury.picoctf.net 22902, but it doesn’t speak English…“, also dass es ein nettes Programm gibt, dass unter $nc mercury.picoctf.net 22902 zu erreichen ist, welches aber kein Englisch spricht.
Lass uns ein Terminal öffnen und hören, wass uns das Programm zu sagen hat:
$ nc mercury.picoctf.net 22902
112
105
99
111
67
84
70
123
103
48
48
100
...
Oha, was für eine Menge Zahlen. Aber was könnten die bedeuten? Irgend welche Ideen? Es handelt sich um die ASCII Representation von Buchstaben. ASCII steht für ‚American Standard Code for Information Interchange‘. Zum glück gibt es eine Python-Funktion, die die Nummern wieder in Buchstaben umwandelt. Hier ein kleines Python-Script, dass die ganze Arbeit für uns erledigt:
#!/usr/bin/env python3
import sys
for line in sys.stdin:
print(chr(int(line)), end='')
Speicher das Script unter decode.py
und mache es mit chmod u+x decode.py
ausführbar.
Alles, was wir jetzt noch machen müssen, ist die Umleitung der Ausgabe von Netcat zu unserem Python-Script:
$ nc mercury.picoctf.net 22902 | ./decode.py
picoCTF{flag}
Glückwunsch, du hast die nächste Flag bekommen!