Hello,
J’ai pas mal avancé dans la prog en C et j’aimerais maintenant, en parallele de mon “autoformation” me lancer dans un projet un peu hard pour concretiser quelques connaissances.
L’idée de ce projet est d’automatiser une partie de l’exploitation d’un bof par return-into-libc (permettant de contourner des protections comme PaX par exemple).
Concretement, cela passe par une recherche automatisé des adresses memoire de system(), exit() et bien entendu notre “/bin/sh”.
Comment trouver manuellement system() et exit() (deux fonctions de la libc) ? C’est simple, par GDB. Il suffit s’implement de lancer un x/x system et x/x exit sur un process en cours et GDB nous renverra nos adresses.
Là est ma première difficulté, comment arriver en C pour récupérer ces 2 valeurs ?
Récupérer /bin/sh par un scanner de memoire via ptrace(). Pour ça, j’ai déjà trouvé un bout de code qui devrait m’aider, reste qu’à l’intégrer dans mon programme finale. Ca fera l’objet éventuellement de la 2eme difficulté.
<------>
-
Déjà, est-ce possible de choper des adresses memoire via gdb depuis un programme en C ?
-
Si oui, par quoi passer ? quelle est la trame ? Quelles libs ?