Erreur de Compilation: stray ' 302’ Dans le programme etc
j'ai du mal à compiler le code d'exploitation suivant:
http://downloads.securityfocus.com/vulnerabilities/exploits/59846-1.c
j'utilise: "gcc file.C " et " fichier gcc-O2.c" mais les deux obtient les erreurs suivantes:
sorbolinux-exec.c: In function ‘sc’:
sorbolinux-exec.c:76: error: stray ‘2’ in program
sorbolinux-exec.c:76: error: stray ‘4’ in program
sorbolinux-exec.c:76: error: ‘t’ undeclared (first use in this function)
sorbolinux-exec.c:76: error: (Each undeclared identifier is reported only once
sorbolinux-exec.c:76: error: for each function it appears in.)
j'ai essayé de les compiler sur Kali linux et Ubuntu 10.04 et obtenir le même résultat.
11 réponses
vous avez un caractère invalide sur cette ligne. C'est ce que j'ai vu:
Vous avez des caractères invalides dans votre source. Si vous n'avez pas valide non ascii caractères dans votre code source, peut-être dans une double chaîne littérale, vous pouvez simplement convertir votre fichier en ascii:
tr -cd '-6' < old.c > new.c
Edit: la méthode avec iconv s'arrêtera sur les mauvais caractères, ce qui n'a aucun sens. La ligne de commande ci-dessus fonctionne avec le fichier d'exemple. Bonne chance :-)
chaque fois que compilateur trouvé caractère spécial .. il donne à ces roi d'erreur de compilation .... quelle erreur j'ai trouvé est comme suit
erreur: stray '\302' Dans le programme et erreur: stray '\240' dans le programme
....
un morceau de code que j'ai copié à partir de messanger chatting. A messanger, il n'y avait que des personnages spéciaux.. après avoir copié dans l'éditeur de vim il a changé pour corriger le caractère seulement. Mais compilateur donnait au-dessus de l'erreur .. puis. . cette stamenet que j'ai écrite à mannualy après. . il a obtenu résoudre.. :)
c'est peut-être parce que vous avez copié du code de net ( à partir d'un site qui n'a peut-être pas une page encodée en ASCII, mais une page encodée en UTF-8), donc vous pouvez convertir le code en ASCII à partir de ce site :
"http://www.percederberg.net/tools/text_converter.html"
là, vous pouvez soit détecter les erreurs manuellement en la convertissant en UTF-8, ou vous pouvez le convertir automatiquement en ASCII et supprimer tous les caractères errants.
j'ai eu la même chose avec un caractère qui est apparu visiblement comme un astérisque, mais était une séquence UTF-8 à la place.
Encoder * st;
Lors de la compilation retourné:
g.c:2:1: error: stray ‘2’ in program
g.c:2:1: error: stray ‘0’ in program
g.c:2:1: error: stray ‘7’ in program
342 210 227 s'avère être UTF-8 pour opérateur D'astérisque.
supprimer le ' * ' et le taper à nouveau a corrigé le problème.
Codo avait tout à fait raison le 1er octobre. 5 que et courant[i] est le but du texte (avec le symbole de la devise par inadvertance introduit lorsque la source a été mis en HTML (voir l'original): http://downloads.securityfocus.com/vulnerabilities/exploits/59846-1.c
la modification de Codo rend ce code d'exploitation compilé sans erreur. J'ai fait cela et j'ai pu utiliser L'exploit sur Ubuntu 12.04 pour escalader les privilèges root.
Les explications données ici sont correctes. Je voulais juste ajouter que ce problème pourrait être parce que vous avez copié le code de quelque part, à partir d'un site web ou d'un fichier pdf en raison de laquelle il ya quelques caractères invalides dans le code.
essayez de trouver ces caractères invalides, ou tapez le code si vous ne pouvez pas. Il compilera certainement alors.
Source:errants erreur de raison
avec moi, cette erreur s'est produite lorsque j'ai copié et collé un code en format texte à mon éditeur (gedit). Le code était dans un document de texte (.odt) et j'ai copié et collé dans gedit. Si vous avez fait la même chose, vous avez réécrit manuellement le code.
j'ai remarqué un problème lors de l'utilisation de la commande tr ci-dessus. La tr de la commande COMPLETELY supprime le "guillemets". Il serait préférable de remplacer le "guillemets" avec quelque chose comme ça.
ceci vous donnera un aperçu rapide de ce qui sera remplacé.
sed s/[”“]/'"'/g File.txt
cela fera les remplacements et mettra le remplacement dans un nouveau fichier appelé WithoutSmartQuotes.txt.
sed s/[”“]/'"'/g File.txt > WithoutSmartQuotes.txt
ceci écrasera le fichier original.
sed -i ".bk" s/[”“]/'"'/g File.txt
http://developmentality.wordpress.com/2010/10/11/how-to-remove-smart-quotes-from-a-text-file/
ce problème se produit lorsque vous avez copié du texte à partir de html ou que vous avez fait des modifications dans l'environnement windows et que vous essayez de compiler dans L'environnement Unix/Solaris.
s'il vous Plaît " dos2unix" pour supprimer les caractères spéciaux dans le fichier:
dos2unix nom de fichier.ext nom du fichier.ext
Changer le nom du fichier.c à un autre file423.C. cela peut être dû au conflit de noms entre les fichiers C.