1

重複の可能性:
printf でのフォーマット文字列攻撃

皆さん、これは宿題ではありません。私は IT キャンプに参加していました。教師から次のコードが渡されました。

#include <stdio.h>
int main()
{
    char s[200],s2[100];
    int a=123;
    int b=&a;
    puts("camp login:");
    scanf("%100s",&s);
    puts("somedata:");
    scanf("%50s",s2);
    printf(s2);

    if (a==31337)
        func(s);
}

そして、コードを変更せずに func(s) を実行するように指示されました。コンパイルして実行し、データを入力するだけです。実際には、これはSSHサーバーに接続することによって行われ、プログラムが自動的に起動され、実行が終了するとユーザーが切断されます.

かどうかわからない

    puts("camp login:");
    scanf("%100s",&s);

これは非常に重要です。実際、彼らは私たちのシステムへのログインを求めています。おそらく誰がタスクを実行したかを知るためです。私が見つけたもの:

int b=&a; //Ultra-weird
scanf("%50s",s2); //Shouldn't it be "scanf("%50s",&s2);" ?

まあ、私は今いくつかのレポを危険にさらしていることを知っています。これは実際のプログラミングの質問ではありませんが、削除されないほど興味深いものであることを願っています:)

回答ありがとうございます。

4

0 に答える 0