H30春 午後1 問1 設問8

ビギナーさん  
(No.1)
H30春 午後1 問1 設問8 の解答が DisplayNote() ですが、
これとRegisterName のどこに着目すれば問題文の通りASLR有効下でも共有ライブラリ内のメモリアドレスを特定できるのでしょうか?
2023.03.20 22:59
pixさん 
SC ダイヤモンドマイスター
(No.2)
メンバ関数でDisplayNote()のみ、メンバ変数をprintf()で出力しています。
本来それぞれの変数には、
m_note->name:ノート名を格納したアドレス
m_note->msg:メッセージ内容格納したアドレス
が格納されています。

しかし、図3の脆弱性を悪用されることにより、以下の方法で共有ライブラリの
アドレスを特定することができる可能性があります。
1.図3の脆弱性を利用し、m_note->nameに任意のメモリのアドレスをセットする
2.DisplayNote()内のprintf()でm_note->nameが指し示すメモリの内容を表示させる
3. この操作をアドレスを特定するまで繰り返す

この問題はCやC++でポインタを使ったことがないとイメージが難しいです。
特にダングリングポインタ(参照先のないポインタ)についての知識が必要に
なります。
2023.03.21 01:00
ビギナーさん  
(No.3)
pixさん

なるほど、printfで攻撃者がメモリの内容を確認できてしまうのですね。納得しました。
分かりやすい説明ありがとうございます。
2023.03.21 10:03

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop