-1

これは ping を送信するだけのように見えますが、ping だけを使用できる場合、その意味は何ですか?

/* WARNING: this is someone's attempt at writing a malware trojan. Do not
   compile and *definitely* don't install. I added an exit as the
   first line to avoid mishaps - msw */
int main (int argc, char *argv[])
{
    exit(1);
    unsigned int pid = 0;
    char buffer[2];
    char *args[] = {
        "/bin/ping",
        "-c",
        "5",
        NULL,
        NULL
    };

    if (argc != 2)
        return 0;

    args[3] = strdup(argv[1]);
    for (;;)
    {
        gets(buffer); /* FTW */

        if (buffer[0] == 0x6e)
            break;

        switch (pid = fork())
        {
            case -1:
                printf("Error Forking\n");
                exit(255);
            case 0:
                execvp(args[0], args);
                exit(1);
            default:
                break;
        }
    }
    return 255;
}
4

3 に答える 3

4

特権モードで任意のコードを実行することは、ハッキングまたはハッキングの試みです。ping は、ICMP_ECHO_REQUEST の raw ソケットを取得するために SUID ルートを実行する必要があり、意図的なバッファ オーバーランは、gets(buffer)ジャンクを ping に渡すことを目的としています。

これが実際にどのように機能するかはわかりませんが、コンパイルして実行しないでください。

于 2010-05-22T16:58:44.597 に答える
2

pingが引数で呼び出されることを確認します-c 5。シェル スクリプトまたはエイリアスの方が読みやすく、書きやすいため、これはばかげています。

于 2010-05-22T16:54:32.333 に答える
0

このプログラムは、基本的に単純なシェル プログラムをエミュレートします。シェル プログラムは、別のプログラムの引数を入力として受け取り、その指定されたプログラムを新しいプロセスで起動します。上記のプログラムは、1 つの特定のプログラム (この場合は ping) 用にハード コードされているだけで、非常に単純です。

シェル プログラムは、プログラムを起動するためのインターフェイスを提供することで、オペレーティング システムをより使いやすくします。

于 2010-05-22T16:56:46.447 に答える