Outils d'utilisateurs

Outils du Site


hackingweek_2014:web:web3

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

<?php
 
require_once "../secret.php";
session_start();
 
(isset($_SESSION['web3'])) or die("Oops! This page appears broken - Access error.");
echo "Success! The password is \"" . $secretpassword3 . "\"";
 
?>

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

<?php
 
if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1')
{
	if (isset($_GET['id']))
	{
		$id = htmlspecialchars($_GET['id'], ENT_QUOTES);
 
		if (preg_match("/^[a-zA-Z0-9]+$/", $id) === false)
			die("Could not find the provided session ID");
 
		if (file_exists(session_save_path() . "/sess_$id") === false)
			die("Could not find the provided session ID");
 
		session_id($id);
		session_start();
 
		$_SESSION['web3'] = true;
		session_write_close();
	}
 
}
else
{
	die("Oops! This page appears broken - Access error.");
}
?>

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

hackingweek_2014/web/web3.txt · Dernière modification: 2017/04/09 15:33 (modification externe)