From 9a8692883ddd49ee9a31d7bb7845d720a4d0a709 Mon Sep 17 00:00:00 2001 From: gbrochar Date: Sat, 30 Jan 2021 09:43:04 +0100 Subject: [PATCH] solution corrected and improved level00-06 --- level01/Ressources/solution | 8 +++----- level02/Ressources/solution | 9 +++++---- level03/Ressources/solution | 13 +++++++++++-- level04/Ressources/solution | 13 ++++++++----- level05/Ressources/solution | 8 +++++--- level06/Ressources/solution | 20 ++++++++++++-------- 6 files changed, 44 insertions(+), 27 deletions(-) diff --git a/level01/Ressources/solution b/level01/Ressources/solution index dbeca63..49ea9f6 100644 --- a/level01/Ressources/solution +++ b/level01/Ressources/solution @@ -55,10 +55,8 @@ flag12:x:3012:3012::/home/flag/flag12:/bin/bash flag13:x:3013:3013::/home/flag/flag13:/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 va donc utiliser "john". On enresitre le hash dans un fichier, puis on passe se fichier en argument a john. +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 enregistre le hash dans un fichier, puis on passe ce fichier en argument a john. $ john flag_intermediaire -> abcdefg - - +> abcdefg \ No newline at end of file diff --git a/level02/Ressources/solution b/level02/Ressources/solution index 68174cb..531eb2e 100644 --- a/level02/Ressources/solution +++ b/level02/Ressources/solution @@ -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 --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 -Tfields -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" \ No newline at end of file diff --git a/level03/Ressources/solution b/level03/Ressources/solution index a118799..ed820bb 100644 --- a/level03/Ressources/solution +++ b/level03/Ressources/solution @@ -1,6 +1,15 @@ On peut voir qu'il y a un executable level03 appartenant a flag03. 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 diff --git a/level04/Ressources/solution b/level04/Ressources/solution index 317718b..3a7e3f1 100644 --- a/level04/Ressources/solution +++ b/level04/Ressources/solution @@ -1,7 +1,10 @@ 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 -echo peut afficher le resultat de commande avec par exemple echo `ls` -on envoi un requete GET /?x=`getflag` avec netcat sur le port 4848 du pc -$ nc -v rssweather.com 80 -le serveur print le flag +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 4747 du pc + +$ nc 127.0.0.1 4747 +GET /?x=`getflag` + +le serveur renvoie le flag diff --git a/level05/Ressources/solution b/level05/Ressources/solution index 414e246..be6c42b 100644 --- a/level05/Ressources/solution +++ b/level05/Ressources/solution @@ -2,9 +2,11 @@ avec $ find / -user flag05 2>/dev/null > /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 + +il sera alors execute et on pourra recuperer le flag dans /tmp/flag05 \ No newline at end of file diff --git a/level06/Ressources/solution b/level06/Ressources/solution index c4c34b2..d61279e 100644 --- a/level06/Ressources/solution +++ b/level06/Ressources/solution @@ -1,16 +1,20 @@ -On a vu qu'il y avait un script php qi etait executer par un executable. -C'ette executable prent en argument un fichier et transmet le comptenue du fichier au script php. -Ce scripte php effectue plusieur regex. +On a vu qu'il y avait un script php qui est execute par le binaire level06. +Cet executable prend en argument un fichier et transmet le contenue du fichier au script php. +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: -"ctf preg_replace /e" +Apres quelque recherche sur les regex, preg_replace et /e en php, on se rend compte que la ligne : +$a = preg_replace("/(\[x (.*)\])/e", "y(\"\\2\")", $a); -le premier liens etait un exo de ctf remarcablement identique a notre exercice: -https://0x00sec.org/t/how-to-pwned-nebula-level09-php-preg-replace/812 +est vulnerable, en effet le modifier /e fait que le deuxieme argument de preg_replace sera interprete comme une expression php +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 [x {${shell_exec(getflag)}}] + +puis rentrer ce fichier en argument du binaire level06 \ No newline at end of file