私は自分のRaspberry Pi(ASLRが無効)にバッファオーバーフローを生成するために取り組んでいます。 私は、main function
、vulnerable function
、そして呼び出されるべきではない関数であるevil function
を持つプログラムを持っています。GDB:関数の戻りアドレスが格納されているスタックメモリアドレスを検索しますか?
私のmain関数はある時点で脆弱な関数を呼び出しますが、悪関数は決して呼び出されません。私はそれがバッファオーバーフローを使用していることを確認する必要があります。
私が今までに持っているのは、主な機能の脆弱な機能の戻りアドレスです。悪い機能の開始アドレスで上書きしたいのです。私はこれが正しいアプローチだと思う。
しかし、私はどのようにgdbのメモリを調べて、どのスタックアドレスにリターンアドレスが格納されているかを知ることができませんでした。利用可能な例があります。プログラムの実行中にgdbを通して文字列を入力すると、スタックポインタの周りのメモリを検索し、何らかの形で戻りアドレスが格納されます。これは私にとってはむしろ変わっているようです。なぜなら、彼らの入力は、必然的に求められていたリターンアドレスからちょうどカップルのアドレスを記憶していることを、どうやって知ることができたからです。
gdbを使用してリターンアドレスのスタックを「検索」できるかどうかは私の質問です。