Zum Inhalt springen
Startseite » picoCTF GET aHEAD

picoCTF GET aHEAD

Diese Challenge von picoCTF heißt GET aHEAD und geht um die verschiedene Arten von Http Requests.

Aus der Beschreibung bekommen wir eine URL http://mercury.picoctf.net:47967/ sowie den Hinweis: Find the flag being held on this server to get ahead of the competition

Als ersten Schritt sollte man sich den Inhalt der angegebenen URL im Browser ansehen – was auch sonst. Also starte Firefox, Google Chrome, Safari oder irgend einen anderen Browser deiner Wahl und füge die URL ein:

Es gibt nicht wirklich etwas beeindruckendes zu sehen. Eine Website mit zwei Buttons um die Hintergrundfarbe zu ändern. Dann scheuen wir uns mal den Quelltext an:

<!doctype html>
<html>
<head>
  <title>Red</title>
  <link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
	<style>body {background-color: red;}</style>
</head>
  <body>
    <div class="container">
      <div class="row">
        <div class="col-md-6">
          <div class="panel panel-primary" style="margin-top:50px">
            <div class="panel-heading">
              <h3 class="panel-title" style="color:red">Red</h3>
            </div>
            <div class="panel-body">
              <form action="index.php" method="GET">
                <input type="submit" value="Choose Red"/>
              </form>
            </div>
          </div>
        </div>
        <div class="col-md-6">
          <div class="panel panel-primary" style="margin-top:50px">
            <div class="panel-heading">
              <h3 class="panel-title" style="color:blue">Blue</h3>
            </div>
            <div class="panel-body">
              <form action="index.php" method="POST">
                <input type="submit" value="Choose Blue"/>
              </form>
            </div>
          </div>
        </div>
      </div>
    </div>
  </body>
</html>

Auch hier nicht wirklich etwas besonderes – nur eine Sache fällt auf: der erste der beiden Buttons zum Umschalten der Hintergrundfarbe ist in einem Formular mit GET-Methode während der zeite Button in einem Formular mit POST-Methode ist. Normalerweise würde ein Formular reichen. Wenn wir uns den Namen der Challenge anschauen ist das alles schon sehr verdächtig. Es scheint also darum zu gehen, die Flag dadurch zu erhalten, mit verschiedenen Request Methoden zu experimentieren.

Also: welche Http Request Methoden gibt es?

  1. GET – mit GET Requests fordert man üblicherweise Daten vom Webserver ab. Wenn du eine Website in deinem Browser öffnest, sendet dein Browser ein GET Request an den Webserver.
  2. POST – ein POST Request wird oft dazu benutzt, Daten an einen Webserver zu schicken. Beispielsweise mit dem Formular einer Website.
  3. HEAD – der HEAD Request ähnelt dem GET Request, liefert aber nur den Header, nicht den Body der Seite.
  4. PUT – PUT Requests sind dafür da, Ressourcen auf dem Webserver zu erstellen bzw. zu modifizieren.
  5. DELETE – Ähnlich dem PUT Request, nur zum Löschen der entsprechenden Ressource.

Es gibt noch ein paar andere Http Methoden, aber momentan brauchen wir nicht mehr. Wenn du mehr über Http Methoden wissen möchtest, schau dir mal https://developer.mozilla.org/de/docs/Web/HTTP/Methods an.

Da mit einem Browser so ohne weiteres nicht so einfach andere Methoden als GET benutzt werden können, schreiben wir uns ein kleines Script, um dem Server ein paar verschiedene Requests entgegen zu werfen. Wir könnten auch Tools wie BurpSuite benutzen, aber ich finde das in diesem Fall etwas übertrieben.

import requests
r = requests.get('http://mercury.picoctf.net:47967/')

print("Status:\n", r)
print("Headers:\n", r.headers)
print("Content:\n", r.content)

Dieses Script schickt dem Server ein GET Request und zeigt die Antwort des Servers. Andere das Skript einfach, um eine andere Methode zu benutzen. Die Syntax ist immer identisch. Ersetze einfach das .get in Zeile zwei durch irgend eine andere der oben genannten in Kleinbuchstaben.

Probiere ein paar Methoden durch und ich bin mir ziemlich sicher, dass du die Flag findest.

Schlagwörter:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert