Problème de compilation avec GCC


#1

Voilà, j’ai plein de messages d’erreur quand je compile avec GCC, je comprends pas trop… les programmes sont juste, vu qu’ils viennent de tutoriaux trouvés sur le net, mais pas moyen d’en compiler un seul :neutral_face: Me manque-t-il une lib ou un paquet ?

[quote]Using built-in specs.
Target: i486-linux-gnu
Configured with: …/src/configure -v --enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.0 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-awt=gtk-default --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre --enable-mpfr --disable-werror --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.0.3 20051201 (prerelease) (Debian 4.0.2-5)[/quote]

Merci de me dire ce qu’il manque :\ J’ai du zapper des choses à l’install de ma etch.


#2

peut tu poster l’un des codes sources qui ne passe pas voir si ca fait pareil ailleurs tu n’as pas oublier d’option a gcc lors de la compile comme le lien vers une librairie ou connerie du genre???

Que te renvois les erreurs de compile???
Ca fonctionne correctement avec un simple hello world?


#3

voilà par exemple une source qui m’ennuie :

#include <stdio.h> int main(int argc, char **argv) { char buffer[180]; if(argc>1) strcpy(buffer,argv[1]); printf("bouh"); }

voilà le résultat :

[quote]julian@blackbox:~$ gcc -o test2 test2.c
test2.c: In function ‘main’:
test2.c:6: warning: incompatible implicit declaration of built-in function ‘strcpy’[/quote]

Et sinon, oui je sais le code contient une faille, mais c’est volontaire, d’ailleurs le problème ne devrait pas venir de là (enfin, à ma connaissance).


#4

d’abord, tu n’as pas d’erreur: tu as un warning.
Ensuite, il est normal: ou est la déclaration de strcpy ? en tout cas, elle n’a jamais été dans stdio.h.
trouves le bon include, et ca ira déja mieux.
En tout cas dans l’exemple que tu donnes, ton gcc fonctionne parfaitement normalement :laughing:


#5

#include <stdio.h> #include <string.h> int main(int argc, char **argv) { char buffer[180]; if(argc>1) strcpy(buffer,argv[1]); printf("bouh"); }
Tu me diras si tu as réussi a exploiter ce buffer overflow :slightly_smiling:


#6

Merci à vous, ouip, je me suis planté d’include. Sinon, pour le bof, oui (il segfault à 184 caracters). En tout cas dans la pile, l’EIP est bel et bien écrasé.


#7

Tu as testé un shellcode? Mais normalement maintenant il y a PAX qui est censé empecher l’exploitation de bof sous linux non???


#8

[quote=“Ashgenesis”]Tu as testé un shellcode? Mais normalement maintenant il y a PAX qui est censé empecher l’exploitation de bof sous linux non???[/quote]Non, je bloque au niveau du shellcode. Mais si on arrive à écraser l’EIP, sauf erreur, celà veut dire qu’on peut passer ce qu’on veut, shellcode comprit.

Concerant Pax, je me rappel plus si le module est comprit dans grsec ou s’il est par défaut dans tous les kernels récents. Mais je vais quand même vérifier ça.


#9

Je n’ai jamais essayé d’aller plus loin je connais bien la théorie mais jamais de pratique pour la création de shellcode.

Un tres tres bon tuto sur les bofs et shellcodes lasecwww.epfl.ch/~oechslin/advbof.pdf

a lire et a relire :slightly_smiling:

Concernant PAX le module est bien compris dans grsec mais par contre je ne sais pas si il est intégré de base sous les derniers noyaux debian.

Quelques bonnes adresses pour en savoir plus sur PAX
phrack.org/phrack/58/p58-0x04
phrack.org/phrack/59/p59-0x09
pax.grsecurity.net


#10

Un petit article sur les bofs et les shellcodes qui vient de sortir :slightly_smiling:
frenchezines.fr.funpic.org/tries … llcode.txt


#11

Pour en revenir au tout début de ce post, je me permettrai d’ajouter que quand on a des warnings ou erreurs dans une compil, avant de chercher trop loin. Un petit:

Y a que ca de vrai mon bon Monsieur, pour remettre l’environnement d’applomb … :smiley: