2

関数があると仮定します

foo(char *name,int id)
{  
 printf ("%s%d",name,id);
}

バッファ オーバーフローを使用して、スタック上のリターン アドレスを foo 関数アドレスに置き換えます。私はこれを達成することができました。

関数の引数もオーバーフローするにはどうすればよいですか? foo は 2 つの引数を取ります。バッファ オーバーフローを使用してこれらの引数をオーバーフローさせる方法を理解してもらえますか。

4

1 に答える 1

0

理論的にはそうです。関数が呼び出されたときに引数がスタックにプッシュされますが、上書きの成功はスタックのレイアウトに依存します。また、あなたの目的は、その間のデータを破損しないようにする必要があることです。

上記のコードには別の脆弱性もあります。考えてみてください。

于 2013-03-22T10:05:41.080 に答える