Virtial Box上のCentOSで
scanf関数にecho・perlコマンドを使って
パイプを作りバッファを溢れさせる入力をさせたいです。
c
1#include <stdio.h> 2 3int sub(); 4 5int main(void){ 6sub(); 7return 0; 8} 9 10int sub(){ 11char moji[15]; 12scanf("%s\n",moji); 13int * p; 14int *subp; 15subp = main; 16printf("This is main ReturnAddress: %p\n",subp); 17printf("%d\n",sizeof(subp)); 18int *p; 19p = (int*)moji; 20int ebpofs; 21for(ebpofs=-32;ebpofs<80;ebpofs++){ 22printf("addr%p price:%x",p + count,p[count]); 23} 24return 0; 25} 26
このプログラム adr に対して
cmd
1echo -e "AAAAAAAAAAAAAAAAAAA" | .adr 2または 3perl -e 'print "A"x20' | ./adr
のように文字列を流してやると・・・
41のところ
15バイト分しか受け取られていません。
なぜでしょうか?
ホストのwindows上ではechoコマンドを使ってバッファを溢れさせることができたのですが・・・
CentOSではできないようでもなっているのでしょうか?
分からないのでお願いします。


sub関数逆アセンブル


回答の取得に失敗しました
