UNIX仮想マシンでフォーマット文字列攻撃を行う必要があるセキュリティコースを受講しています。脆弱性は、コマンドライン引数を使用したフォーマット文字列です。
私の質問は、フォーマット文字列のアドレスに値を書き込むにはどうすればよいですか(シェルコードアドレスを関数のリターンアドレスに書き込むなど)?
たとえば、差出人住所の場所0xaabbccddに値987654を書き込もうとします。のような文字列を試し"AAAA_%10$x"
ましたが、これによりプログラムが印刷される可能性がありますAAAA_41414141
。
次に、文字を自分の住所に置き換えて、上書きしようとします。
\xdd\xcc\xbb\xaa_%10$x_%54321x_%n"
しかし、それは機能しません。すでに書いた文字がいくつかあるので、もっと小さい数字を使うべきだという記事が%54321x
ありますが、以前に書いた文字の数もわかりません%54321x
。
注:環境には古いバージョンのgccがあるため、値が大きすぎることを心配する必要はありません。助言がありますか?ありがとう。