Pour des raisons pédagogiques, je voudrais faire une démonstration de remote
buffer overflow. Une solution serait de chercher n'importe soft serveur
ayant de telles failles connues et de lancer le script kiddy ad hoc.
Malheureusement, il est difficile aujourd'hui de trouver une version de soft
qui contient la faille :^) Les auteurs des softs preferent que l'on
télécharge la version patchée et cachent le telechargement de la version
buggée (Ce qui me semble normal).
Est-ce qu'il n'existe pas un soft specialement ecrit pour faire une demo de
buffer overflow? J'imagine le comportement suivant:
- On lance un serveur qui fournit un service (genre "echo de ce que l'on
tape") sur un port TCP.
- On lance le exploit client sur une autre machine en lui indiquant
l'adresse IP et le port du serveur.
- Le serveur se prend un buffer overflow et un autre programme est injecté
dans le petit espace offert.
- Oh magie, quand on fait désormais un telnet sur le port du serveur, on a
désormais un shell.
A priori ça devrai passer... Mais EIP est pas écrasé même avec 600*'A' en paramètres... Cependant ça écrase EBP.
- Mon exemple est-il correct ? - Pourquoi EIP n'est il pas écrasé ?
Sur ta plateforme peut-etre que le compilateur ne gère 'main' pas comme une fonction classique ce qui fait qu'elle n'est peut-etre pas appelée via un CALL qui empilerait EIP, mais par un saut ou noyée dans le reste du code initialise l'environnement. Il faudrait regarder avec un desassembleur.
Salut, J'utilise Dev-C++ v4.9.9.0 sur un Windows 2000 Profesionnel SP4. J'utilise OllyDbg pour débugger mais comment savoir où se trouve mon "main" dans le code désassemblé ? Merci, Mathieu
SecuVirus.com wrote:
A priori ça devrai passer... Mais EIP est pas écrasé même avec
600*'A' en paramètres... Cependant ça écrase EBP.
- Mon exemple est-il correct ?
- Pourquoi EIP n'est il pas écrasé ?
Sur ta plateforme peut-etre que le compilateur ne gère 'main' pas
comme une fonction classique ce qui fait qu'elle n'est peut-etre pas
appelée via un CALL qui empilerait EIP, mais par un saut ou noyée
dans le reste du code initialise l'environnement.
Il faudrait regarder avec un desassembleur.
Salut,
J'utilise Dev-C++ v4.9.9.0 sur un Windows 2000 Profesionnel SP4.
J'utilise OllyDbg pour débugger mais comment savoir où se trouve mon "main"
dans le code désassemblé ?
Merci,
Mathieu
A priori ça devrai passer... Mais EIP est pas écrasé même avec 600*'A' en paramètres... Cependant ça écrase EBP.
- Mon exemple est-il correct ? - Pourquoi EIP n'est il pas écrasé ?
Sur ta plateforme peut-etre que le compilateur ne gère 'main' pas comme une fonction classique ce qui fait qu'elle n'est peut-etre pas appelée via un CALL qui empilerait EIP, mais par un saut ou noyée dans le reste du code initialise l'environnement. Il faudrait regarder avec un desassembleur.
Salut, J'utilise Dev-C++ v4.9.9.0 sur un Windows 2000 Profesionnel SP4. J'utilise OllyDbg pour débugger mais comment savoir où se trouve mon "main" dans le code désassemblé ? Merci, Mathieu