私はReturn-to-libc攻撃を研究していて、その概念を理解しています。しかし、それでも意味がありません。攻撃を行うには、system()および"/ bin/sh"のメモリアドレスが必要です。これはdifferentすべてのシステムで。そして、このトピックについて私が見たすべての例は、ダミーのCコードを作成してgdbでデバッグし、これらのアドレスをtheir Host systemで確認することです。
シェルアクセスがまだない場合、targetシステムでこれらのメモリアドレスを取得するにはどうすればよいですか?私が持っているのは、ファジングで見つけたEIPアドレスと、何も実行できない非実行スタックだけでしょうか?
これは、ホストが採用する緩和策に少し依存します。ターゲットにALSRがなく(最新のシステムではまれ)、それらが実行しているOSがわかっている場合(Ubuntu 16.04など)、同じバージョンのシステムをセットアップして、その方法でアドレスを見つけることができます。多くのMetasploitエクスプロイトを見ると、それらには指定できるTARGETバージョンのテーブルがあり、通常は異なるターゲットアドレスが使用されます。
(ASLRを使用した)より近代的なセットアップでは、次のいずれかを行う必要があります。