- 论坛徽章:
- 0
|
【好玩】缓冲区溢出攻击实验
>;>;我的填充串是这样的:b8 ef be ad de 68 bf 84 04 08 c3 00 01 02 03 04 05 06 07 08 09 10 11 12 e8 ef ff bf c0 ef ff bf
b8 ef be ad de 68 bf 84 04 08 c3 00 01 02 03 04 05 06 07 08 09 10 11 12 这部分没意见,下面的test的frame pointer我觉得我输入的也是对的(不过这里有个问题,一会会提到),关键就在buf[]的地址上,是怎么来得到的?
我就是在运行到getbuf的断点时(此时已执行了push %ebp和movl %esp,%ebp)
print /x ($ebp-24) 来得到buf[]地址的,我感觉应该也没有错
但是有一个问题,我看有一些书里写对每个linux程序来说,代码段都从0x08048000开始,stack frame段都从0xbfffffff开始,
aero得到的test 的frame pointer是0xbfffefe8,buf[]地址是0xbfffefc0,显然是符合这个说法的
而我打印出的test 的frame pointer是0xfeeb7ff8,buf[]地址是0xfeeb7fc0,跟书上的说法不符,都比0xbfffffff大出很多... 不知道converse你的情况怎么样?
我的系统是fedora core 2,去年10月买的,就图书城里买的那种9张cd一张dvd的那种,有没有可能是这个系统不许程序执行数据段,尤其是堆栈段的内容呢? |
|