@6f70
本当に分からない
本当に?
やりたかったこと
Memory Disclosureの脆弱性を作りこみたい
CTFの問題を作っていた
- メモリー上の秘密のデータを読み出せたら点数を得る(Heartbleed的な)
道
- クイズゲームを模した対話的プログラム
- ヒープ上の狭いレンジを読み出せる脆弱性
- ヒープのレイアウトを調整する必要
mallocを複数回呼び出す
理想
mallocした領域から下位アドレスから上位アドレスに向かって積み上がる
現実
mallocの気まぐれ
- mallocが避けた領域には何もないはずなのに
- 1/5くらいの確率で素直に積み上がる
- eglibc
64byte以下のサイズでもズレが起こる
break @ gdb
予期しないところからmallocが呼ばれている?
dump memory @ gdb
なにも分からないのでひたすらdumpを眺める
推測まとめ
- 過去にfreeした領域でサイズが近いものが残っている場合はアドレスをすっ飛ばして再利用するのか?
- malloc分からん
- mallocの確保先は予測できる
- 運頼み