Hack.Lu CTF 2013 – Packed

Hack.Lu CTF 2013 - Packed - Task Description

Die Challenge “Packed” beschreibt den Fund verwürfelter Daten, in denen sich irgendwo noch etwas Nützliches befinden soll. Zur Bearbeitung erhalten wir nur eine Datei, die wir zunächst etwas genauer untersuchen:

Hack.Lu CTF 2013 - Packed - File Content

Neben vielen Bytes, die sich nicht wirklich zuordnen lassen, sind doch drei Dinge relatisch schnell erkennbar. Im oberen Bereich befindet sich ein PDF, das im Magick zu erkennen ist (nicht abgebildet). Darunter befindet sich ein Text aus ASCII-Zeichen, der jedoch unverständlich ist. Zusammen mit dem Wort “rot”, das in der Datei vorhanden ist, könnte es sich jedoch um einen ROT13-Cipher handeln.

Im unteren Bereich befindet sich ein langer Abschnitt aus Base64-kodierten Daten. Wenn wir die Abschnitte nun einzeln untersuchen, stellen wir Folgendes fest. Die PDF-Datei kann direkt ausgeschnitten und dann geöffnet werden. Als Ergebnis erhalten wir diese Ausgabe:

Hack.Lu CTF 2013 - Packed - PDF File Part

Sowohl optisch als auch forensisch sind keine weiteren Informationen aus dieser Datei zu entnehmen.

Continue reading

NcN 2013 CTF Quals – Level 2

Level 2 of NcN CTF offers a “level.apk” file for downloading. After fetching and extracting it’s contents, the folder res arrested my attention.

There are 16 png-files , each one is a part of a qr code.

NcN 2013 Quals - Level 2 - QR Image

The easiest way to solve the puzzle is to arrange the parts on one’s own without writing a script. After finishing the puzzle …

NcN 2013 Quals - Level 2 - Final QR Code

… you only need to scan the qr code with any tool you like (in my case it was a smart phone) , and there it is, the flag:

 788f5ff85d370646d4caa9af0a103b338dbe4c4bb9ccbd816b585c69de96d9da

Of course I could have written a script. But in my opinion it was only worth if I would have to solve not only one puzzle. Concluding it is only a diligent but routine piece of work.

Boston Key Party CTF 2013 – wolfram beta

Boston Key Party 2013 - Wolfram Beta - task description

Diese Challenge (Wolfram Beta) verlangt, dass wir aus einem Berechnungsdienst ausbrechen und die Flagge auslesen. Dieser Dienst soll unter der angegebenen IP-Adresse lauschen, was wir sofort überprüfen.

rup0rt@lambda:~/BostonKeyParty2013$ nc 54.218.12.97 34567
Wolfram Beta - BkP CTF 2013 Team
Wolfram Beta is a great calculator.
just put in a number at the prompt
then put in the operator
then finally the second number
and the calculation will be done INSTANTLY
no accounts necessacary, unlike some of our competition!
first num: 1
operator: +
second num: 2
Thinking...
.
Done Thinking!
3

Der Rechner fordert uns also zur Eingabe von zwei Zahlen und einem Operator auf. Nach einer Denkphase, die wohl auf Wolfram Alpha anspielen soll, wird uns das Ergebnis ausgegeben.

Beim Versuch anstatt der Zahlen Buchstaben oder Sonderzeichen zu übergeben, wird die Verbindung sofort mit einem entsprechenden Verbot abgebrochen. Der Operator jedoch lässt sich nach einigen Versuchen so manipulieren, dass eine Fehlerausgabe erscheint:

first num: 1
operator: +asfetrrr
second num: 2
Thinking...
.
Done Thinking!
{interactive}(1,14): error CS0119: Expression denotes a `type', where a `method group' was expected

Unhandled Exception: System.ArgumentException: The expression did not set a result
  at Mono.CSharp.Evaluator.Evaluate (System.String input) [0x00000] in <filename unknown>:0
  at wolfram_beta.MainClass.ReplCalculator () [0x00000] in <filename unknown>:0
  at wolfram_beta.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.ArgumentException: The expression did not set a result
  at Mono.CSharp.Evaluator.Evaluate (System.String input) [0x00000] in <filename unknown>:0
  at wolfram_beta.MainClass.ReplCalculator () [0x00000] in <filename unknown>:0
  at wolfram_beta.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0

Wir erkennen, dass es sich um ein C#-Programm (Csharp) handelt. Außerdem wird MONO verwendet, also die Linux-Variante von C#. Zur Auswertung des übergebenen Ausdrucks wird die Evaluate-Funktion aufgerufen. Damit könnte es also möglich sein, einen Operator zu übergeben, der testweise Zeichenketten konkateniert.
Continue reading

BaltCTF 2013 – Game

BaltCTF 2013 - Game - task description

Bei dieser Challenge (Game) wird uns ein Bild gezeigt und wir müssen den Namen des entsprechenden Spiels heraus finden. Das gesuchte Spiel sieht so aus:

BaltCTF 2013 - Game - whats the name of this game

Die direkte Bildersuche bei Google oder TinEye liefert kein Ergebnis. Darum habe ich zunächst nur einmal allgemein nach “ASCII games” gesucht und mir alle Bilder, die mit diesem Begriff in Zusammenhang stehen, auflisten lassen. Das Ergebnis sieht so aus:

BaltCTF 2013 - Game - Ascii game search results

Als siebentes Ergebnis des gezeigten Auschnittes befindet sich auch ein Bild, dass dem Gesuchten zumindest ähnelt:

BaltCTF 2013 - similar image

Wir verfolgen des Bild bis hin zu einem Blogeintrag, der den gefundenen Ausschnitt wie folgt beschreibt:

BaltCTF 2013 - Nethack

Demnach soll es sich um das Spiel NetHack handeln, ein rundenbasiertes Computerspiel aus dem Jahr 1987. Da der Name bereits mit großer Wahrscheinlichkeit auf die gesuchte Lösung hindeutet, versuchen wir diesen als Flagge und erhalten 73 Punkte ;-).

Die Antwort lautet somit: “nethack“.

asdf

VolgaCTF 2013 – ppc 200

volgactf 2013 - ppc 200 - task description

Die Challenge (ppc 200) spricht von einer verdächtigen Nachricht, die uns in Form dieser Datei übersandt wird. “File” meldet, dass die Datei nur aus “Daten” besteht, aber ein erster Blick hinein zeigt uns:

volgactf 2013 - ppc 200 - file encoding

Die Datei beginnt mit den Worten “reverse all” und scheint offenbar von uns zu verlangen, den Inhalt komplett umzudrehen. Dies tun wir auch mit folgendem kleinen Python-Skript:

#!/usr/bin/python

import sys

revstr = "reverse all\x00\x00"

file = open(sys.argv[1]).read()

if file[0:len(revstr)] == revstr:
  file = file[:len(revstr):-1]
  print file

Nach Anwendung auf die Datei und erneuter Betrachtung im Texteditor, finden wir folgenden neuen Dateianfang vor:

volgactf 2013 - ppc 200 - base16 encoding

Dieses Mal soll der Inhalt der Datei offensichtlich mit Base16 dekodiert werden. Auch das setzen wir mit einem Skript, diesmal mit Perl, um:

#!/usr/bin/perl

open(FILE, $ARGV[0]);
@file = <FILE>;
close(FILE);

for ($i=11; $i<=length($file[0]); $i+=2) {
  $double = substr($file[0], $i, 2);
  print chr(hex($double));
}

Continue reading

VolgaCTF 2013 – ppc 100

VolgaCTF 2013 - PPC 100 - task description

Bei dieser Challenge (ppc 100) geht es um eine RTF-Datei. Das Rich Text Format ist ein altes, von Microsoft entwickeltes, proprietäres Dateiformat zur Darstellung von Textdokumenten. Ein erster Blick in das Dokument mit LibreOffice offenbart uns diesen Inhalt:

VolgaCTF 2013 - PPC 100 - RTF file view

Offensichtlich handelt es sich um ein offizielles, von der Australischen Regierung herausgegebenes 11-seitiges Dokument zur Weltraumpolitik. Die weitere Betrachtung in LibreOffice lässt keine Auffälligkeiten erkennen.

Ein RTF-Dokument wird jedoch in der Datei selbst mit programmiersprachenähnlichen Code-Blöcken beschrieben, weshalb sich ein Blick in die Datei selbst durchaus lohnt. Neben ganz “normalen” Anweisungblöcken, wie zum Beispiel:

\styrsid489982 Heading 1 Char;}{\*\cs24 \additive

… finden sich auch sehr Auffällige Blöcke, wie dieser:

{\*\volgactf412 JAQQnQECTB0KnUkZSK8xCMNZw/flr3799PyZU8O5DTNheDBwX
qopApfP4Kakq0jSUceLbRqlDIM0a8vpDkIEwKbTNJGRd6oqQmRTuwJ+kwarG2vT
[...]

Das Tag “VolgaCTF” kann kein Zufall sein! Von diesen Anweisungen gibt es mehrere Hundert Stück, jeweils gefolgt von einer Zeichenkombination, die auf den ersten Blick sehr nach Base64 aussieht. Die Zahl, die sich Hinter dem VolgaCTF-Tag befindet, könnte dabei für die Postion des Blockes stehen.
Continue reading

VolgaCTF 2013 – admin 100

VolgaCTF 2013 - admin 100 - task description

Bis auf den Hinweis, dass es “viel zu lesen” gibt, ist die Aufgabenbeschreibung dieser Challenge (admin 100) ist nicht sehr aussagekräftig. Zusätzlich erhalten wir diese Datei. Nach dem Entpacken erhalten wir folgendes Ergebnis:

rup0rt@lambda:~/VolgaCTF2013/admin100$ ls
0  3  6  9  c     dot  g  j  m  p      r      t  w
1  4  7  a  coma  e    h  k  n  q      s      u  x
2  5  8  b  d     f    i  l  o  quote  space  v  y

Das Archiv beinhaltet viele Verzeichnisse, die nach fast jedem Buchstaben, jeder Zahl und einzelnen Sonderzeichen benannt sind. In jedem Verzeichnis befindet sich eine Datei namens “file”, die beispielsweise so aussehen:

12
25
37
59
96
113
116
122
[...]

Meiner Vermutung nach, beschreiben die Namen der Verzeichnisse das entsprechende Zeichen und die Zahlen in den “file”-Dateien die Positionen, an denen das Zeichen im Lösungstext vorkommt.
Continue reading

plaidCTF 2013 – three eyed fish

plaidCTF 2013 - three eyed fish - task description

Diese Challenge (three eyed fish) verrät zunächst nicht viel über das eigentliche Ziel. Nur eine Binärdatei wird zum Download bereit gestellt und der legendäre “Ban Hammer” als Belohnung für dieses Quest versprochen 😉

rup0rt@linux64:~/Plaid2013# file three_eyed_fish
three_eyed_fish: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

Eine erste Untersuchung ergibt, dass es sich um ein 64bit Linux-Binary handelt. Um das normale Verhalten des Programmes zu testen, starten wir die Datei direkt.

rup0rt@linux64:~/Plaid2013# ./three_eyed_fish

Eine Ausgabe erzeugt das Programm nach dem Starten nicht. Beendet wird es jedoch auch nicht sofort – es muss also eine andere Funktion geben. Nach weiterer Betrachtung stellt man fest, dass immer nach dem Starten die Umschalt-LED des Keyboards aufleuchtet und zu blinken beginnt.

Die LED blinkt jedoch nicht einheitlich oder nach einem festen Muster. Alles was erkennbar ist, dass regelmäßig größere Pausen zwischen den Sequenzen liegen. Es könnte sich demnach um eine Art Morse-Code handeln, wobei die Pausen die Trennung zwischen den einzelnen Buchstaben darstellt.
Continue reading

ForbiddenBITS CTF 2013 – Fantastic

ForbiddenBITS CTF 2013 - fantastic - task description

Wieder eine sehr spartanische Aufgabenbeschreibung für diese Challenge (Fantastic). Neben dem Hinweis “ein paar Jahre zurück zu gehen”, wird noch dieses Bild bereit gestellt, das mit dem Namen “wars.png” bezeichnet ist:

ForbiddenBITS CTF 2013 - fantastic - wars

Dies sieht nach irgendeiner kryptischen Sprache aus. Mein erster Gedanke ging in die Richtung, eine Schriftart zu finden, die jedem dieser Zeichen einen Buchstaben zuordnen lässt – ähnlich der bekannten Windows – Webdings – Fonts. Die Suche im Internet nach Schriftarten, die dieser ähnlich sehen, verlief auf die schnelle jedoch ohne Erfolg.

Also widmen wir uns als Nächstes die Bezeichnung der Challenge “fantastic” und des Bildes “wars”. Die Google-Bildersuche nach “wars font” liefert relativ zu Beginn einen sehr interessanten Treffer mit dem Titel “Aurebesh – the alphabet of the Star Wars universe“.

ForbiddenBITS CTF 2013 - fantastic - Star Wars aurek besh alphabet

Demnach handelt es sich bei “Aurebesh” um die galaktische Standardsprache, die im “STAR WARS”-Universum gesprochen bzw. geschrieben wird. Die Zeichen sind mit dem gegebenen Bild identisch und müssen nur noch Übersetzt werden.

ForbiddenBITS CTF 2013 - fantastic - solution

Die Lösung lautet somit “STARWARSISCOOL“.

ForbiddenBITS CTF 2013 – X93

ForbiddenBITS CTF 2013 - X93 - task description

Diese Challenge (X93) ist der vorherigen “X94-Machine” sehr ähnlich. Nicht nur die Aufgabenstellung ist identisch, auch der Server selbst bietet exakt die gleichen Funktionen.

rup0rt@lambda:~/FB2013$ nc 95.170.83.28 3003
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 _    _  93   _________   ______   ______  _    _  _____  ______   ______
\ \  / /     | | | | | \ | |  | | | |     | |  | |  | |  | |  \ \ | |
 >|--|<      | | | | | | | |__| | | |     | |--| |  | |  | |  | | | |----
/_/  \_\     |_| |_| |_| |_|  |_| |_|____ |_|  |_| _|_|_ |_|  |_| |_|____

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Really Wanna Trade with us ? yes/no
yes

Enter Username :
1338-offbyone

Welcome 1338

Enter your Command :

[1] balance
[2] exchange
[3] transfert
[4] restricted area
4

This Area is restrcited for accounts with 5000usd+

Wieder geht es darum, unseren Kontostand auf über 5000 US-Dollar zu erhöhen um so auf den geschützen Bereich zugreifen zu können. Zunächst wiederholen wir testweise unser Vorgehen aus der voherigen Challenge.

[1] balance
[2] exchange
[3] transfert
[4] restricted area
2

Enter Destination currency
EUR 

Enter Source currency
USD

Enter Amount
-5000 

you dont have such amount

Diesmal scheinen die Benutzereingaben jedoch korrekt validiert zu werden und wir müssen einen anderen Weg finden, unser Konto aufzufüllen. Da das System beim Währungstausch einen Umrechnungsfaktor verwenden muss, liegt vielleicht eine Ungenauigkeiten beim Runden vor?
Continue reading