1月10日(火)1、2コマ目

今日、やったこと

バッファオーバーフロー

今日のホワイトボード

バッファオーバーフローでリターンアドレス書き換え

前回のつづきです。

前回はサンプルプログラム「bof_sample2.c」を使って、関数呼び出しの際、呼び出し元に戻れるようにスタック上にリターンアドレスを記録すると解説をしました。

今日は実際にスタック上のリターンアドレスを書き換えてみます。

図 コマンドライン引数でリターンアドレスを書き換える
strcpy()でバッファオーバーフローした結果、リターンアドレスを書き換えるには、コマンドライン引数が40バイト+リターンアドレスで可能になります。

今回は、コマンドライン引数をperl(スクリプト言語の1種)で生成しています。

バッファオーバーフローをやってみよう その1

サンプルプログラム「bof_sample3.c」でバッファオーバーフローを引き起こし、通常とは異なる動きをさせます。
基本的には「bof_sample2.c」と同じです。
図 やってみよう その1 スタックエリアとコードエリア
バッファオーバーフローの脆弱性をついて、リターンアドレスを下図のように書き換えます。
図 やってみよう その1 リターンアドレス書き換え後

バッファオーバーフローをやってみよう その2

サンプルプログラム「bof_sample4.c」でバッファオーバーフローを引き起こし、通常とは異なる動きをさせます。
こちらも基本的には「bof_sample2.c」と同じです。
図 やってみよう その2 スタックエリアとコードエリア
バッファオーバーフローの脆弱性をついて、リターンアドレスを下図のように書き換えます。
図 やってみよう その2 リターンアドレス書き換え後

じかいは

バッファオーバーフローのテストをします。
テストは紙のテストで、何を見てもいいが、自力でやることです。






このブログの人気の投稿

1月24日(火)1、2コマ目

1月6日(金)1、2コマ目

1月17日(火)1、2コマ目