编译错误:在程序等中迷路’\ 302′

我在编译后面的漏洞利用代码时遇到问题:

http://downloads.securityfocus.com/vulnerabilities/exploits/59846-1.c

我正在使用:“gcc file.c”和“gcc -O2 file.c”,但它们都会出现以下错误:

sorbolinux-exec.c: In function 'sc': sorbolinux-exec.c:76: error: stray '\302' in program sorbolinux-exec.c:76: error: stray '\244' 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.) 

我尝试在Kali linux和Ubuntu 10.04上编译它们并得到相同的结果。

你在该行上有一个无效字符。 这就是我所看到的:

在此处输入图像描述

您的来源中包含无效字符。 如果你的源代码中没有任何有效的非ascii字符,可能是双引号字符串文字,你可以简单地将你的文件转换回ascii:

 tr -cd '\11\12\15\40-\176' < old.c > new.c 

编辑:iconv的方法将停在错误的字符中,这没有任何意义。 上面的命令行正在使用示例文件。 祝好运 :-)

每当编译器发现特殊字符时……它会给出这些编译错误的王….我发现的错误如下

错误:在程序和错误中迷路’\ 302’:在程序中迷路’\’240′

….

我从聊天消息中复制了一些代码。 在messanger中,它只是特殊字符..复制到vim编辑器后,它只更改为正确的字符。 但编译器给出了上面的错误..然后..那个stamenet我写了mannualy后…它有了解决.. 🙂

这可能是因为您从网络复制代码(来自可能不是ASCII编码页面但是UTF-8编码页面的网站),因此您可以将代码转换为此站点的ASCII:

http://www.percederberg.net/tools/text_converter.html

在那里,您可以通过将错误转换回UTF-8来手动检测错误,也可以自动将其转换为ASCII并删除所有杂散字符。

我得到了一个明显可以作为星号出现的角色,但却是一个UTF-8序列。

 Encoder * st; 

编译时返回:

 gc:2:1: error: stray '\342' in program gc:2:1: error: stray '\210' in program gc:2:1: error: stray '\227' in program 

对于ASTERISK OPERATOR,342 210 227原来是UTF-8。

删除’*’并再次键入它修复了问题。

Codo在10月5日完全正确,当前[i]是预期的文本(当源被放入HTML时无意中引入了货币符号(见原文): http : //downloads.securityfocus.com/vulnerabilities/exploits/ 59846-1.c

Codo的改变使得这个漏洞利用代码编译没有错误。 我这样做,并能够使用Ubuntu 12.04上的漏洞升级到root权限。

这里给出的解释是正确的。 我只是想补充一点,这个问题可能是因为您从某个地方,从网站或pdf文件中复制了代码,因为代码中存在一些无效字符。

尝试找到那些无效字符,或者只是重新输入代码。 它肯定会编译。

来源: 杂散错误原因

当我将文本格式的代码复制并粘贴到我的编辑器(gedit)时,我发现了这个错误。 代码在文本文档(.odt)中,我将其复制并粘贴到gedit中。 如果你这样做,你手动重写代码。

我注意到使用上面的tr命令时出现问题。 tr命令COMPLETELY删除“智能引号” 。 用这样的东西替换“智能引号”会更好。

这样可以快速预览要替换的内容。

sed s/[”“]/'"'/g File.txt

这将进行替换并将替换放在名为WithoutSmartQuotes.txt的新文件中。

sed s/[”“]/'"'/g File.txt > WithoutSmartQuotes.txt

这将覆盖原始文件。

sed -i ".bk" s/[”“]/'"'/g File.txt

http://developmentality.wordpress.com/2010/10/11/how-to-remove-smart-quotes-from-a-text-file/

从html复制了一些文本或者在Windows环境中进行了修改并尝试在Unix / Solaris环境中编译时出现此问题。

请执行“ dos2unix ”删除文件中的特殊字符:

dos2unix fileName.ext fileName.ext

将file.c的名称更改为其他file423.c。 可能是因为c文件之间的名称冲突。