缓冲区溢出实验报告:Linux平台下stack frame演变分析.pdfVIP

  • 0
  • 0
  • 约2.51千字
  • 约 4页
  • 2026-01-28 发布于北京
  • 举报

缓冲区溢出实验报告:Linux平台下stack frame演变分析.pdf

实验报告

实验人:学号日期:2013-1-2

院(系):软件学院专业(班级):软件工程(计应机应用软件方向)10级1班

实验题目:buffer_overflow

1目标

了解什么是bufferoverflow。

选择一个系统平台,实际完成课件chapter5中的例子,并画出stackframe的演变

过程。

2实验平台

Linuxversion2.6.38-15-generic(buildd@komainu)(gccversion4.5.2(Ubuntu/Linaro

4.5.2-8ubuntu4))

3实验过程

1)代码:

对课件中的代码稍作修改(修改了code的值)如下:

#includestdio.h

#includestring.h

charcode[]=

\x41\x41\x41\x41

\x41\x41\x41\x41\x41

\x41\x41\x41\x41\x41

\x41\x41\x41\x41\x41

\x41\x41\x41\x41\x41

\xbe\x05\x40\x00;

voidcopy(constchar*input)

{

charbuf[10];

strcpy(buf,input);

printf(%s\n,buf);

};

voidbug(void)

{

printf(Ishouldn’thaveappeared\n);

}

intmain(intargc,char*argv[]){

copy(code);

return0;

}

2)查看过程:

由下图红色框内容可得,运行copy函数后,所应返回的地址为0x4005e7.

进入copy函数后,查看其栈顶指针rsp值为0x7fffffffe0d0,再查看栈顶20行的数据,

找到返回地址0x4005e7,我们的目标就是利用copy函数中的局部变量buf的溢出,修改此

值,使到返回变地址为bug函数的地址0x4005be。所以再根据buf的起始位置,最后设得

code的值为:

\x41\x41\x41\x41

\x41\x41\x41\x41\x41

\x41\x41\x41\x41\x41

\x41\x41\x41\x41\x41

\x41\x41\x41\x41\x41

\xbe\x05\x40\x00;

3)stackframe的演变过程:

调用copy后,执行strcpy(buf,input);前:

0x7fffffffe0f80x004005e7下一指令地址

0x7fffffffe0f40x00007fff

0x7fffffffe0f00xffffe110

0x7fffffffe0ec0

0x7fffffffe0e80x004005f0

0x7fffffffe0e40

0x7fffffffe0e00

0x7fffffffe0dc0

0x7fffffffe0d80

0x7fffffffe0d40x00007fff

0x7fffffffe0d00xf7a56c48

esp

执行strcpy(buf,input);后:

0x7fffffffe0f8下一指令地址

0x7fffffffe0f40

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档