Bei dieser Challenge (web 200) wird uns eine Webseite genannt, die angegriffen werden soll um so an den Schlüssel zu gelangen. Ein erster Aufruf der URL liefert folgendes Bild:
![CodeGate CTF 2013 - web 200 - website](https://wp.f00l.de/wp-content/uploads/2013/03/cg_web200.png)
Neben dem Quellcode der gesamten Webseite und einer Login-Möglichkeit, wird auch eine Seite zur Generierung eines One-Time-Passwords (OTP) bereit gestellt, die sich so darstellt:
![CodeGate CTF 2013 - web 200 - one time password](https://wp.f00l.de/wp-content/uploads/2013/03/cg_web200_otp.png)
Es wird also ein Einmal-Passwort generiert, das sich alle 20 Sekunden ändert und demnach auch nur für 20 Sekunden Gültigkeit besitzt. Darüber hinaus wird eine ID angegeben, die aus der derzeitigen IP-Adresse besteht. Aus dem Quellcode der Login-Seite (login_ok.php) lässt sich folgendes entnehmen:
if (strcmp($password, $_POST["ps"]) == 0) {
echo "welcome, <b>".$_POST["id"]."</b><br />";
echo "<input type='button' value='back' onclick='history.back();' />";
if ($_POST["id"] == "127.0.0.1") {
echo "<hr /><b>".$flag."</b><br />";
}
}
Daraus ergibt sich das Ziel, um diese Challenge zu lösen. Der Login muss über die ID “127.0.0.1” (localhost) realisiert werden, damit der Inhalt der Flag-Datei offenbart wird. Dazu müssen wir entweder von der IP-Adresse 127.0.0.1 auf die OTP-Generierung zugreifen, was nicht möglich sein wird oder anderweitig die Passwortabfrage unter Angabe dieser ID umgehen.
Continue reading →