■
ひとまず、Cを学習することにした。
というか、ポインタの学習がメインですが。
バッファーオーバーフローの仕組みの学習で避けては通れなさそうなので。
わかったこと
- 最初に変数を定義し、そいつ用のメモリを確保
- ここで確保されるメモリのサイズが決まる(8バイトとか)
- 確保したサイズを超える値を入れられるととバッファーオーバーフロー
・・・。
であってるかな。
バッファーオーバーフローの脆弱性を含んでいるプログラムは
この変数で確保したメモリサイズに代入される値のサイズチェックをしていない
ということになるわけで。
修正と追記
- どうも、メモリ領域はいくつかあって、変数宣言で確保されるのはデータ領域。
- よくクラックで使われるのは、スタック領域。
- 確保するメモリ領域のサイズはint型で1から2バイト。longだと4バイト。などなど。