Bonjour,
Nous allons voir
maintenant ce niveau 7 qui va demander de comprendre les bases en
programmation Perl. Rien de bien compliqué un script est fourni
ici.Voici déjà ce qu'on nous demande de faire :
The flag07 user was writing their very first perl program that allowed them to ping hosts to see if they were reachable from the web server.
To do this level, log in as the level07 account with the password level07. Files for this level can be found in /home/flag07.
Et donc logiquement
voici la source du fameux petit script Perl :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #!/usr/bin/perl use CGI qw{param}; print "Content-type: text/html\n\n"; sub ping { $host = $_[0]; print("<html><head><title>Ping results</title></head><body><pre>"); @output = `ping -c 3 $host 2>&1`; foreach $line (@output) { print "$line"; } print("</pre></body></html>"); } # check if Host set. if not, display normal page, etc ping(param("Host")); |
Dans un premier
temps je vais voir ce qu'il y a sur le serveur et comme indiqué tout
est présent avec un fichier supplémentaire qui sera utile pour la
suite :
Je vous conseil au
passage de tenter de comprendre à quoi celui-ci sert avant que je
vous l'explique moi même. Donc dans ce programme on peut voir qu'il
va prendre un paramètre Host et que celui-ci sera utilisé pour
faire un simple ping on va donc simplement tester celui-ci :
On va tenter
maintenant de lancer ce programme en lui donnant un paramètre vide
simplement pour voir ce qu'il nous répond :
Pour les plus
curieux qui auront été voir le man ou même simplement qui auront
test la commande ping sans paramètre ils se seront rendu compte
qu'en réalité il s’agissait ici d'un ping call du système en lui
même. La suite logique sera de tester un `getflag` avec le fameux ;
(qui est l’équivalent du `&&` que l'on a pu voir avant).
Tiens ça ne
fonctionne pas.. On va devoir passer par autre chose. Vous vous
souvenez du fichier que l'on a pas tellement regardé en réalité
celui-ci est un fichier de configuration d'un simple server. On va
donc récupérer ce que l'on va avoir besoin ici c'est à dire le
port pour l'utiliser et rien de plus je vous invite quand même à
tenter de comprendre un peu plus en détail ce fichier.
On nous indique donc
qu'un server tourne sur le port 7007. Je vais devoir ici utiliser un
nouveau petit programme qui va nous permettre de faire nos requêtes
via une ligne de commande. Wget sert à beaucoup de chose et
comprendre son utilisation sera important pour la suite. Donc voici
une utilisation très basique de ce petit programme :
Un simple ping sur
l'ip 127.0.0.1 est fait ce qui nous indique que le serveur fonctionne
bien ! Enfin pour terminer il suffit simplement de récupérer
notre flag sans oublier le caractère d’échappement puisqu'ici nous utilisons wget et que celui-ci va interpréter notre
' ;'. Voici donc le résultat :
Nous avons réussis
à comprendre des petites notions en plus dont surtout l'utilisation
(certes basique mais utile pour la suite) de wget. Je vous invite à
tenter de refaire ce challenge mais dans le but cette fois-ci de récupérer un shell pour pouvoir taper la commande de notre choix
(dont getflag) ce sera une approche différente du problème mais ce
ne sera pas vraiment plus compliqué .
Aucun commentaire:
Enregistrer un commentaire