お初です。
プログラミング初心者ですがご回答下されば幸いです。
バッファオーバーフロー(以降BOF)に関して知りたいのですがどのサイトを見ても
「BOFの仕組み」や「BOFの対策」ばかりで実際のプログラムの例がほとんどありません。
あっても、ただ単に「こうするとバッファがあふれます」程度
かなり詳しく書いていてもハードルが高くて理解できない実例ばかり
知りたいのは、単純な数行程度のプログラムでBOFを故意に行い、プログラムを書き換えるものです。
昔見たサイトで単純な仕組みでBOFを解説しているのがあったのですが探しても見当たりませんでした。
うろ覚えですが、
char str[3];
strcpy(str, "ABC...");
のような感じでstrのバッファを溢れさせ、関数を呼び出したのか、以降の変数に任意の書き込みを行ったのか
そこら辺の記憶が欠落していて思い出せないのです。
ただ、BOFにより何かしらの出力(printf||puts)を行っていたものと記憶しています。
BOFを故意に行い関数を呼び出すもしくは以降の変数を書き換えるプログラムを教えてくださいませんか?
できれば、スタックにどのように積まれていき、BOFによってどのように書き換えるのか詳しく知りたいです。
簡単な例をもとに解説してくれるWebPageがあればそちらも教えていただきたいです。
注文が多くて申し訳ありません。
コードだけでもわかれば後は自分で弄って理解したいと思います。
よろしくお願いします。