Récupération de variable générée par GDB en C

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é.

<------>

  1. Déjà, est-ce possible de choper des adresses memoire via gdb depuis un programme en C ?

  2. Si oui, par quoi passer ? quelle est la trame ? Quelles libs ?

ouah.org/textes4.html
ouah.org/mudge.html

Tiens deux bon textes sur les bof :wink:

et un sur le bypass de pax par return into libc ouah.org/p58-0x04

fait chier que phrack se soit arreter

[quote=“Ashgenesis”]http://ouah.org/textes4.html
ouah.org/mudge.html

Tiens deux bon textes sur les bof :wink:

et un sur le bypass de pax par return into libc ouah.org/p58-0x04

fait chier que phrack se soit arreter[/quote]
Bon ça ne répond pas vraiment à ma question parceque justement j’en bouffe en ce moment des textes sur les bof (du moins ceux qui sont encore exploitables de nos jours), ceci dit, merci quand même de ta réponse ;p

Moi je voudrais juste qu’un programmeur experimenté me dise si ce que je veux faire est possible ou pas en C, juste ça, après je me débrouille pour le coder ;p

[quote=“coldroom”]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 ?

  1. Déjà, est-ce possible de choper des adresses memoire via gdb depuis un programme en C ?

  2. Si oui, par quoi passer ? quelle est la trame ? Quelles libs ?[/quote]

#include <stdio.h> main() { int i; i = (int) &main; printf("%d\n",i); }
te donne l’adresse de main. &system et &exit doivent marcher…