タグ

2016年11月22日のブックマーク (2件)

  • 補足2: .dtors overwrite について - memologue

    これの続き。 前に書いたGOT overwriteとほぼ同じ手口なんですが、.dtorsセクションに登録されている(関数の)アドレスを書き換えて、お好きな関数を呼ぶという攻撃方法があります。.dtor overwrite とか呼ばれてます。この手口を、 NXあり ASLRあり RELROなし PIEなし という条件下で試してみます。 #include <stdio.h> #include <stdlib.h> __attribute__((destructor)) static void dtor_fn() { puts("good bye!"); } static void my_dtor_fn(void) { puts("HEHE"); } int main(int argc, char** argv) { if (argc > 1) { unsigned int* got_addr

    補足2: .dtors overwrite について - memologue
    TAKEmaru
    TAKEmaru 2016/11/22
  • mainを一度も呼ばないばかりか蹂躙する - memologue

    shinhさんの「ふとイヤなコードを思いつきました」にインスパイヤされてみました。 % cat iyana.c #include <stdio.h> #include <stdlib.h> int main; __attribute__((constructor, destructor)) static void x() { if (main) puts("world!"); else exit(main = puts("hello")); } % gcc -Wall iyana.c iyana.c:4: warning: ‘main’ is usually a function % ./a.out hello world!意味はありません。っていうかこの警告ははじめて見たわ。教えてくれなくても存じていましてよ。 (追記) shinhさんの8/29の日記にさらに凄いのが。 トラックバックし

    mainを一度も呼ばないばかりか蹂躙する - memologue
    TAKEmaru
    TAKEmaru 2016/11/22