snow-crash/level06/Ressources/solution

22 lines
948 B
Plaintext

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 telecharge ce script pour l'indenter correctement et pouvoir un peu mieux le lire malgre les regex...
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);
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
$ echo '[x {${shell_exec(getflag)}}]' > /tmp/exploit06 && ./level06 /tmp/exploit06