重複の可能性:
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);" ?
まあ、私は今いくつかのレポを危険にさらしていることを知っています。これは実際のプログラミングの質問ではありませんが、削除されないほど興味深いものであることを願っています:)
回答ありがとうございます。