バッファーオーバーフローで関数を実行してしまう実験

次のプログラムを見てください。
これを実行すると不思議なことが起こります。

#define pos 4
int WINAPI BufferOverFlow(char *p)
{
    char y[pos];
    memcpy(y,p,pos+32);
}
void WINAPI funcs()
{
    MessageBoxA(0,"脆弱性テスト","test",0);
}
int WINAPI WinMain( HINSTANCE, HINSTANCE,LPTSTR,int)
{
    char c[pos+32];
    *((DWORD *)(c+pos+4))=(DWORD)&funcs;
    BufferOverFlow(c);
    return 0;
}

赤文字の個所でバッファーオーバーフローが起こっている以外は、何もしないコードです。

しかし、このコードを実行すると、関数 funcs が実行されて、ダイアログが出てしまいます。

おすすめ

6件のフィードバック

  1. yagi より:

    1ヶ月ほど前にサイトを見つけお世話になっています。windows2000が終わりかけているという話をみて、ubuntuをもうひとつのパソコンにインストールしました。黒翼猫さんの成果をいろいろ使わせていただいています。ありがとうございます。この記事へのコメントということですがほかに入力するところがないのでここにかかせていただきます。
    数日前まで何ともなかったのですが、このhpの左に出ていたlivedoorプロフィールなどがまんなかの下にでるようになりました。当方の設定が悪いのか、黒翼さんが設定を変えられたのかわかりませんがご教示をお願いします。

  2. yagi より:

    1ヶ月ほど前にサイトを見つけお世話になっています。windows2000が終わりかけているという話をみて、ubuntuをもうひとつのパソコンにインストールしました。黒翼猫さんの成果をいろいろ使わせていただいています。ありがとうございます。この記事へのコメントということですがほかに入力するところがないのでここにかかせていただきます。
    数日前まで何ともなかったのですが、このhpの左に出ていたlivedoorプロフィールなどがまんなかの下にでるようになりました。当方の設定が悪いのか、黒翼さんが設定を変えられたのかわかりませんがご教示をお願いします。

  3. blackwingcat より:

    ありがとうございます。
    カテゴリの文字数が長すぎてIEだと表示が乱れるようになっていたようでした。

  4. blackwingcat より:

    ありがとうございます。
    カテゴリの文字数が長すぎてIEだと表示が乱れるようになっていたようでした。

  5. yagi より:

    おはようございます。早速のご対応ありがとうございました。当方来年還暦になろうとするのに不勉強で、今後とも勉強させていただきます。よろしくお願いします。
    八木 

  6. yagi より:

    おはようございます。早速のご対応ありがとうございました。当方来年還暦になろうとするのに不勉強で、今後とも勉強させていただきます。よろしくお願いします。
    八木 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です