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