snow-crash/level10/Ressource/solution

60 lines
2.2 KiB
Plaintext

La encore il y a un executable "level10" et un fichier "token"
$ ls
> -rwsr-sr-x+ 1 flag10 level10 10817 Mar 5 2016 level10*
> -rw------- 1 flag10 flag10 26 Mar 5 2016 token
$ ./level10
> ./level10 file host
> sends file to host if you have access to it
on en deduit naturelement qu'il faut donner en argument a ./level10 un fichier et un host
$ ./level10 token 127.0.0.1
You don't have access to token
On cree alors un liens symbolique comme dans le level08:
$ ln -s /home/user/level10/token /tmp/link
> You don't have access to /tmp/link
Tristesse intersideral, il faut donc reflechir
Pour comprendre ce qui ce passerai dans le cas ou l'on aurait les droit on cree un fichier
On va cree un fichier cacher pour qu'il ne se fasse pas suprimer par la tach cron
$ echo "Ceci est un fichier que je peux lire correctement" >> /tmp/.test
$ ./level10 /tmp/.test 127.0.0.1
> Connecting to 127.0.0.1:6969 .. Unable to connect to host 127.0.0.1
Damn, il n'y a pas de serveur... Qu'à cela ne tienne on va ecouter avec netcat
On ouvre une deuxieme fenenetre + connexion ssh pour ecouter avec netcat puis on relance level10
$ nc -lv 127.0.0.1 6969
> Connection from 127.0.0.1 port 6969 [tcp/*] accepted
> .*( )*.
> Ceci est un fichier que je peux lire correctement
On peut donc lire le fichier que l'on passe en parametre
Apres quelques errance sur les liens symbolique l'idee des tester des "Race condition" ou "Symlink race" est unr piste
Le plus logique est de le faire un bash. Pour que la race condition fonction il faut les lancer dans deux proces different.
On va donc lancer 3 script bash dans 3 connexion ssh different.
Le premier script va cree un lien symbolic vers un fichier vide sur lequel on a les droit Puis le meme lien synbolic sur token. et tout ca en boucle avec -f pour ecraser le lien existant.
Le deuxieme va lancer l'executable level10 avec les bon argument
Enfin le dernier va lancer des serveur netcat en boucle car on va aussi recevoir le fichier vide, il faudra alor relancer netcat
pour ca on copy les script shell depuis Resource sur la vm:
$ scp -r -P 4242 level10/Ressource level10@127.0.0.2:/tmp/.level10/
On lance chaque script dans une connection et le tour est jouer
(Oui la derscription de ce level est tres verbeuse)