2009-02-09 8 views
5

Dans le cadre d'une affectation de cours, j'ai besoin d'écrire un code d'exploit pour provoquer un dépassement de tampon et exécuter du code présent sur la pile.Protection d'exécution de pile et randomisation sur Ubuntu

Je désactivé la randomiztion de la pile par la commande suivante: sysctl -w kernel.randomize_va_space = 0 Cependant, je ne peux pas trouver un moyen de désactiver la protection de l'exécution de la pile. Je ne suis pas sûr qu'il y ait une protection d'exécution de pile dans Ubuntu ou pas ... donc ma première question est de savoir s'il y a quelque chose comme l'exec-shield de red hat dans Ubuntu 8.10 et s'il y a, comment pouvons-nous l'éteindre.

J'ai essayé de provoquer un dépassement de tampon et d'exécuter des instructions à partir de la pile, mais chaque fois que j'essaye de le faire, cela me donne un défaut de seg.

J'ai le programme ubuntu 8.10 64 bits, MAIS, le programme de débogage est compilé sur un ordinateur i386 avec la protection de pile désactivée.

+0

* lol * la guerre contre crackers est d'arrêter nos chapeaux blancs pour apprendre le métier. Peut-être que les criminels s'en iront quand on ne sait pas comment ils le font? ;) –

+0

Est-ce que [ce lien] (http://pwet.fr/man/linux/administration_systeme/execstack) aiderait? – jpalecek

Répondre

5

Vous voulez probablement compiler avec le drapeau -z execstack dans votre compilation GCC, ainsi que -fno-stack-protector (pour désactiver la pile SSP/Propolice de GCC protection), i.e.:

gcc -fno-stack-protector -z execstack -o vuln vuln.c 

Tout devrait probablement tourner jake après. Notez que sysctl -w kernel.randomize_va_space=0 est juste la randomisation de l'espace adresse, et non la protection de la pile, en soi; qui peut être brutalement forcé contre l'utilisation de diverses techniques.