solution corrected and improved level00-06

This commit is contained in:
gbrochar 2021-01-30 09:43:04 +01:00
parent e058c734b6
commit 9a8692883d
6 changed files with 44 additions and 27 deletions

View File

@ -55,10 +55,8 @@ flag12:x:3012:3012::/home/flag/flag12:/bin/bash
flag13:x:3013:3013::/home/flag/flag13:/bin/bash flag13:x:3013:3013::/home/flag/flag13:/bin/bash
flag14:x:3014:3014::/home/flag/flag14:/bin/bash flag14:x:3014:3014::/home/flag/flag14:/bin/bash
On peut voir que flag01 donne une information sur le mots de passe. Il n'est pas en claire mais on peut imaginer qu'il est stoquer sous forme de hash. On peut voir que flag01 donne une information sur le mot de passe. Il n'est pas en clair mais on peut imaginer qu'il est stocke sous forme de hash.
On va donc utiliser "john". On enresitre le hash dans un fichier, puis on passe se fichier en argument a john. On va donc utiliser "john". On enregistre le hash dans un fichier, puis on passe ce fichier en argument a john.
$ john flag_intermediaire $ john flag_intermediaire
> abcdefg > abcdefg

View File

@ -2,11 +2,12 @@ Il y a un fichier nommer level02.pcap. Avec une petite recherche google on appre
tshark est un utilitaire premettant de lire les fichier pcap tshark est un utilitaire premettant de lire les fichier pcap
-Tfields permet de selectioner des champ specifique, on choisiera le champ data "-T fields" permet de selectioner des champ specifique, on choisiera le champ data avec "-e data"
$ sudo tshark -r Ressource/level02.pcap -T fields -e data $ sudo tshark -r Ressource/level02.pcap -T fields -e data
avec un convewrtisseur hex to char on obtien: avec un convertisseur en ligne hex to char on obtient:
Password: ft_wandr...NDRel.L0L (avec le '.' qui sont des charactere non inprimable. Ce sont des back-space) Password: ft_wandr...NDRel.L0L (avec le '.' qui sont des caracteres non imprimables (7F). man ascii => Ce sont des backspace)
En prenant en compte les backspaces on obtient "ft_waNDReL0L"

View File

@ -1,6 +1,15 @@
On peut voir qu'il y a un executable level03 appartenant a flag03. On peut voir qu'il y a un executable level03 appartenant a flag03.
Ce fichier execute: echo "Exploit me" Ce fichier execute: echo "Exploit me"
on peut donc changer le PATH. Cree un fichier executable dans /tmp qui execute getflag on peut donc changer le PATH. Cree un fichier executable nomme echo dans /tmp qui execute getflag
quand on execute level03 on obtient alors le flag # /tmp/echo
#!/bin/bash
getflag
on execute level03 de cette maniere :
PATH=/tmp:$PATH ./level03
On obtient alors le flag

View File

@ -1,7 +1,10 @@
Il y a un script qui fait tourner un serveur Il y a un script qui fait tourner un serveur
On se rend compte qu'il tourne avec un find / -user flag04 car il est sur le serveur nginx On se rend compte qu'il tourne avec un find / -user flag04 car il est sur le serveur apache
on voit que le serveur affiche le parametre "x" passe en get avec un echo on voit que le serveur affiche le parametre "x" passe en get avec un echo
echo peut afficher le resultat de commande avec par exemple echo `ls` echo peut afficher le resultat de commande si elle mise entre backquotes par exemple "echo `ls`"
on envoi un requete GET /?x=`getflag` avec netcat sur le port 4848 du pc on envoi un requete GET /?x=`getflag` avec netcat sur le port 4747 du pc
$ nc -v rssweather.com 80
le serveur print le flag $ nc 127.0.0.1 4747
GET /?x=`getflag`
le serveur renvoie le flag

View File

@ -2,9 +2,11 @@ avec
$ find / -user flag05 2>/dev/null $ find / -user flag05 2>/dev/null
> /usr/sbin/openarenaserver > /usr/sbin/openarenaserver
On peut lir le script il execut tout les fichier dans : /opt/openarenaserver/ puis les supprime On peut cat le script il execute tout les fichier dans : /opt/openarenaserver/ puis les supprime
En crean un fichier dans ce dossier on peut observer qu'il est rapidemnt suprimer, donc executer En creant un fichier dans ce dossier on peut observer qu'il est rapidement suprimer, donc executer
il suffit d'avoir un fichier qui contien: il suffit d'avoir un fichier qui contient:
getflag > /tmp/flag05 getflag > /tmp/flag05
il sera alors execute et on pourra recuperer le flag dans /tmp/flag05

View File

@ -1,16 +1,20 @@
On a vu qu'il y avait un script php qi etait executer par un executable. On a vu qu'il y avait un script php qui est execute par le binaire level06.
C'ette executable prent en argument un fichier et transmet le comptenue du fichier au script php. Cet executable prend en argument un fichier et transmet le contenue du fichier au script php.
Ce scripte php effectue plusieur regex. Ce script php effectue plusieurs regex.
On a telecharger ce scripte pour l'indenter correctement et pouvoir un peu mieux le lire malgres les regex... On a telecharge ce script pour l'indenter correctement et pouvoir un peu mieux le lire malgre les regex...
Apres quelque recherche sur les regex, preg_replce et /e en php, on a efectuer une simple recherche google: Apres quelque recherche sur les regex, preg_replace et /e en php, on se rend compte que la ligne :
"ctf preg_replace /e" $a = preg_replace("/(\[x (.*)\])/e", "y(\"\\2\")", $a);
le premier liens etait un exo de ctf remarcablement identique a notre exercice: est vulnerable, en effet le modifier /e fait que le deuxieme argument de preg_replace sera interprete comme une expression php
https://0x00sec.org/t/how-to-pwned-nebula-level09-php-preg-replace/812
on remarque qu'on peut utiliser une commande shell en php avec shell_exec, il suffit donc d'entrer l'expression php
shell_exec(getflag)
dans la regex
il faut un ficher avec il faut un ficher avec
[x {${shell_exec(getflag)}}] [x {${shell_exec(getflag)}}]
puis rentrer ce fichier en argument du binaire level06