36

次のエクスプロイト コードのコンパイルに問題があります。

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 LinuxUbuntu 10.04 (Lucid Lynx) の両方でコンパイルしてみましたが、同じ結果が得られました。

4

12 に答える 12

26

その行に無効な文字があります。これは私が見たものです:

ここに画像の説明を入力

于 2013-10-05T13:31:09.713 に答える
18

ソースに無効な文字が含まれています。ソースに有効な非 ASCII 文字がない場合 (二重引用符で囲まれた文字列リテラルなど) は、次の方法でファイルを ASCII に戻すことができます。

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

iconv を使用したメソッドは、意味をなさない間違った文字で停止します。上記のコマンド ラインは、サンプル ファイルで動作しています。

于 2013-10-05T13:45:33.557 に答える
4

アスタリスクとして目に見える文字で同じ結果が得られましたが、代わりに UTF-8 シーケンスでした:

Encoder * st;

コンパイルすると、以下が返されました。

g.c:2:1: error: stray ‘\342’ in program
g.c:2:1: error: stray ‘\210’ in program
g.c:2:1: error: stray ‘\227’ in program

342 210 227 は、 ASTERISK OPERATOR (Unicode コード ポイント U+2217)の UTF-8 であることが判明しました。

「*」を削除して再度入力すると、問題が解決しました。

于 2016-07-21T09:51:07.513 に答える
1

この問題は、HTML ページからテキストをコピーした場合、または Windows 環境で変更を行って Unix/Solaris 環境でコンパイルしようとした場合に発生します。

" dos2unix " を実行して、ファイルから特殊文字を削除してください:

dos2unix fileName.ext fileName.ext
于 2015-08-05T13:05:23.793 に答える
0

私の場合、コードをテキスト形式でコピーしてエディター ( gedit ) に貼り付けたときに、このエラーが発生しました。

コードはテキスト ドキュメント (.odt) に含まれていました。それをコピーしてgeditに貼り付けました。

同じことをした場合は、コードを手動で書き直しています。

于 2014-07-08T15:54:10.250 に答える
0

ここでの説明は正しいです。この問題は、コードに無効な文字が含まれているために、Web サイトまたは PDF ファイルからコードをコピーしたことが原因である可能性があることを付け加えたいと思います。

これらの無効な文字を探してみるか、見つからない場合はコードを再入力してください。それは間違いなくコンパイルされます。

出典:浮遊エラーの理由

于 2014-04-27T05:02:54.230 に答える
0

Codo は 10 月 5 日&current[i]、意図したテキスト (ソースが HTML に入れられたときに通貨記号が誤って導入された (オリジナルを参照)) である正確に正しかった:

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

Codo の変更により、このエクスプロイト コードはエラーなしでコンパイルされます。私はそれを実行し、 Ubuntu 12.04 (Precise Pangolin)でエクスプロイトを使用して root 権限にエスカレートすることができました。

于 2013-11-14T08:35:31.410 に答える