Programmation
Programmation ELF x64 - Shellcoding - Sheep warmup
Bonjour,
Je suis bloqué dans ce challenge. J’ai créé un shellcode qui saute au dessus des moutons, puis exécute un shell. Cela fonctionne bien sur un programme de test (exécution classique en stack). Mais sur le programme du challenge - qui j’ai récupéré et compilé en local- cela ne marche pas. Sur gdb, je vois que le shell est bien appelé, mais il y a directement un exit. A priori, ce n’est pas - à ce stade - un problème de droits, car tout est exécuté en mode root. Quelqu’un aurait un tuyau ?
Merci !
Programmation ELF x64 - Shellcoding - Sheep warmup
Petite astuce pour maintenir le shell ouvert :
cat shellcode.txt - | ./sc-exec
Sinon je pense que tu risques d’avoir une surprise quand tu obtiendras ton shell. Tu devras surement remettre les mains dans le cambouis ;)
Programmation ELF x64 - Shellcoding - Sheep warmup
Merci ! Géniale l’astuce. Mais sur le fond, je ne comprends quand même pas pourquoi dans le cas d’une exécution du shellcode en stack, j’ai directement un prompt, alors que pour une exécution par le programme du challenge, il me faut passer par une astuce. C’est lié à une propriété du stack ?
Programmation ELF x64 - Shellcoding - Sheep warmup
Petite réponse en retard, mais si ça peut apporter une meilleure compréhension à l’OP, je poste quand même.
Ceci n’a rien à voir avec la stack, c’est une histoire de pipe (https://openclassrooms.com/fr/courses/1513891-la-programmation-systeme-en-c-sous-unix/1514724-les-tubes et Google si tu veux approfondir ce sujet).
Dans la commande de @Th1b4ud, la commande cat, va envoyer le fichier shellcode.txt au programme (qui va donc l’exécuter), puis va créer un pipe entre ton terminal et le shell que ton shellcode spawn.
Sans cela, l’input du shell que tu fais spawn (son stdin) n’est lié à aucun descripteur de fichier, donc il se ferme, impliquant la fermeture du shell (comme un Ctrl + C).
Il existe d’autres solutions pour réaliser ce pipe, par exemple sans passer par un fichier :
(printf "\x90" ; cat) | ./sc-exec
où "\x90" est ton shellcode.
Voili voilou ! 😉
Programmation ELF x64 - Shellcoding - Sheep warmup
Exact ! Merci pour le complément d’informations ;)