Pointer Redirecting
文字列ポインター
関数呼び出しがスタック内にある文字列のアドレスを使用する場合、バッファオーバーフローを悪用して このアドレスを上書き し、バイナリ内の 異なる文字列のアドレスを入れる ことが可能です。
たとえば、system
関数呼び出しが コマンドを実行するための文字列のアドレスを使用する場合、攻撃者はスタックに 異なる文字列のアドレスを配置 し、 export PATH=.:$PATH
を作成して、現在のディレクトリに新しい文字列の最初の文字の名前でスクリプトを作成することができます。これはバイナリによって実行されます。
これに関する 例 は以下で見つけることができます:
32ビット、スタック内のフラグ文字列のアドレスを変更して
puts
によって出力されるようにする
関数ポインター
文字列ポインターと同様に、関数に適用されるが、スタックに呼び出される関数のアドレスが含まれている場合、それを 変更 することが可能です(たとえば system
を呼び出すため)。
これに関する例は以下で見つけることができます:
参考文献
Last updated