HOME»情報処理安全確保支援士掲示板»H30春午後1問1  設問2

情報処理安全確保支援士掲示板

掲示板検索:

[0640]H30春午後1問1  設問2

 やさかさん(No.1) 
この問題ですが、プログラミング経験があまりないため、
問題文でやっていることがあまりよくわかりません。
以下のような認識でよいでしょうか?

設問2  
・ここでやりたいことは、「0x12345678」のアドレスに、
画面で入力した攻撃コードを書き込むこと。
・RegisterNameの入力値のバイト列は「785634120a」になるので、
実際の操作では「xV4(DC…装置制御2)(LF…改行)」という文字列を
画面で入力。
・name[0]…x  name[1]…V  name[2]…4 name[3]…DC
が文字配列の各要素にそれぞれセットされる。(改行は読み捨て)
・2回目のRegisterNameの呼び出しでは、
nameにすでにアドレス値がセットされているため、
2番目のif文内の処理だけ実行される。(20行目)
・今、nameが指すアドレスは「12345678」のため、
「12345678」に2回目のRegisterNameでの入力値(攻撃コード)
が書き込まれる。(下線Aの内容)

下線@、Aの内容と、後述の共有ライブラリの関数テーブルは関係ない気が
するのですが、その認識であっていますか?
また、バッファオーバーフローは今回の攻撃手法(Use-After-Free)
と関係あるのでしょうか?









2021.04.08 05:11
関数従属さん(No.2) 
>・ここでやりたいことは、「0x12345678」のアドレスに、
>画面で入力した攻撃コードを書き込むこと。

→「0x12345678」以降のアドレス(先頭アドレスが「0x12345678」)に
  攻撃コードを書き込むことになります。

>・RegisterNameの入力値のバイト列は「785634120a」になるので、
>実際の操作では「xV4(DC…装置制御2)(LF…改行)」という文字列を
>画面で入力。

→上記の通りとなります。

>・name[0]…x  name[1]…V  name[2]…4 name[3]…DC
>が文字配列の各要素にそれぞれセットされる。(改行は読み捨て)

→上記の通りとなります。

>・2回目のRegisterNameの呼び出しでは、
>nameにすでにアドレス値がセットされているため、
>2番目のif文内の処理だけ実行される。(20行目)

→上記の通りとなります。

>・今、nameが指すアドレスは「12345678」のため、
>「12345678」に2回目のRegisterNameでの入力値(攻撃コード)
>が書き込まれる。(下線Aの内容)

→「0x12345678」以降のアドレス(先頭アドレスが「0x12345678」)に
  攻撃コードが書き込まれます。

>下線@、Aの内容と、後述の共有ライブラリの関数テーブルは関係ない気が
>するのですが、その認識であっていますか?

→上記で攻撃コードは書き込まれましたが、攻撃者としては攻撃コードを実行しなければなりません。
  例えば、上記と同様の手法で関数テーブルのscanfの実行コードの先頭アドレスの値を
  「0x12345678」に書き換えると、scanf関数が呼び出された際、
  scanfの実行コードの先頭アドレスの値を取得しますが、その値が「0x12345678」であり
  scanfを実行するつもりが、攻撃コードが実行されるという事になります。

>また、バッファオーバーフローは今回の攻撃手法(Use-After-Free)
>と関係あるのでしょうか?

→バッファオーバーフローはこの問の主題ではありませんが
  メモリ上に攻撃コードを書き込む点は同じであり、
  そういう意味の関係はあります。
2021.04.08 22:30

【返信投稿用フォーム】

お名前(10文字以内)

顔アイコン


本文(2,000文字以内)

投稿削除用のパスワード(20文字以内)

プレビュー
※宣伝や迷惑行為を防止するため、当サイトとIPAサイト以外のURLを含む文章の投稿は禁止されています。

投稿記事削除用フォーム

投稿No. パスワード 
© 2014-2021 情報処理安全確保支援士ドットコム All Rights Reserved.

Pagetop