PHP

Flag: StarHack{LFI?oh_wow_oh_wow}

Challenge

Description


J'ai un devoir dans mon cours de codage sécurisé, ils m'ont dit de développer une application PHP sécurisée, mais je déteste PHP !!! C'est le mieux que je puisse faire, est-ce sécurisé ou non ? J'ai testé en lisant le Dockerfile et ça fonctionne, mais peux-tu accéder à autre chose ?

LINK

Solution

Avec un outil comme Burp, on peut facilement étudier le traffic web. Ici on peut voir le code source d'index.php. Dedans, il y a un passage intéressant :

$file = isset($_GET['file']) ? str_replace('../', '', $_GET['file']) : null;
if (isset($file) && !empty($file)) {
    try {
        if (!file_exists("./$file")) throw new Exception("File not found.");
        
        $content = @file_get_contents("./$file"); 
        if ($content === false) throw new Exception("Failed to read the file.");
        
        echo $content;

Si l'on met le paramètre file dans notre url, on peut lire un fichier. Comme dit dans la description, on peut lire le Dockerfile :

On voit qu'il y a le flag dans /var/www/flag/flag.txt, seulement, le code PHP est censé nous empêcher de remonter dans l'arborescence.

Mais cette sécurité est mal implémentée et les ../ sont retirés une seule fois, ce qui fait que si l'on entre ....//, le milieu sera retiré, créant un nouveau ../ qui lui ne sera pas filtré.

En va donc chercher le fichier ....//....//....//var/www/flag/flag.txt

Dernière mise à jour

Cet article vous a-t-il été utile ?