Code source disponible pour cette épreuve : https://repo.zenk-security.com/hackingweek2014_ctf/web3.zip
En analysant les sources on remarque la présence d'un fichier success.php
La condition pour obtenir le flag est donc d'avoir la variable web3 en session.
Cette variable est définie dans le fichier chmod.php
Le code commence par vérifier que la connexion provient du serveur lui-même et non d'un client distant, il teste ensuite la présence d'une variable GET nommée id.
Cette variable doit être composée de lettres min/MAJ et chiffres, puis le script vérifie si cet id correspond à un id de session sur le serveur.
La session est ensuite chargée avec cet identifiant, et la variable de session web3 est initialisé à true.
Il faut donc que le PHPSESSID de l'attaquant soit transmis à cette page et passe les contrôles pour obtenu la variable de session.
La seule contrainte viens du test if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1')
Aucun soucis, l'adresse ip du server web est la même que celle des épreuves d'exploit par ssh.
On lance un shell sur une des épreuves remote, puis :
wget http://localhost/web3/chmod.php?id=NOTRE_PHPSESSID
Il ne reste plus qu'a consulter la page success.php avec un navigateur et le flag apparait : **Ciu2Ahhool**