前提
最近CTFを勉強し始めました。
以下のソースコードを実行してaaaaaaaaaaaaaaを入力したところ
0x7fffffffde80の末尾にdf80が追加されています。
この理由がわからないので教えていただけませんか。
該当のソースコード
C
1#include <stdio.h> 2 3int main(){ 4 int zero=0; 5 char buf[10]; 6 7 gets(buf); 8 if(zero==1234){ 9 printf("hacked\n"); 10 }else{ 11 printf("failed\n"); 12 } 13 return 0; 14}
発生している問題
[------------------------------------stack-------------------------------------] 0000| 0x7fffffffde80 --> 0x616161616161df80 0008| 0x7fffffffde88 ("aaaaaaaa") 0016| 0x7fffffffde90 --> 0x0 0024| 0x7fffffffde98 --> 0x7ffff7df0083 (<__libc_start_main+243>: mov edi,eax) 0032| 0x7fffffffdea0 --> 0x7ffff7ffc620 --> 0x50a1000000000
ソースコードは実験用に自分で書きましたので実際にzeroが1234になるかはわかりません。
ただ、上記の疑問がどうしても解決できなかったため質問させていただきました。
有識者からすれば、しょうもない質問かもしれませんがよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー