下载此文档

buflab-handout实验报告.doc


文档分类:研究报告 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍
课程实验报告
课程名称:
实验项目名称: buflab-handout
专业班级:
姓名:
学号:
指导教师:
完成时间: 年月日
信息科学与工程学院
实验题目:buflab-handout
实验目的:
buflab-,做实验所需的3个文件,请在linux(建议使用32位系统)下解压。
buflab-,本次实验的一个简要说明。该文档中除了“在线提交结果并打分”(即submit result to the grading server)部分我们未提供外,其他的信息还是非常有用的,包括对上述3个文件用来干什么、本次实验的任务均有说明。
实验环境:ubuntu
实验内容及操作步骤:
实验内容:这个实验主要是模拟缓冲区溢出。实验中涉及到3个可执行的二进制文件bufbomb,hex2raw,makecookie。bufbomb是进行缓冲区实验的目标程序;既然是缓冲区溢出实验,肯定得有一个导致缓冲区溢出的条件,这个实验是通过类似于c语言中的gets函数的Gets读取一行数据到固定大小的缓冲区,而当我们的输入超过了缓冲区的大小时,Gets没有任何的边界检查,超过缓冲区的数据就会覆盖内存中用作其它用途的数据,从而改变程序的行为
L1:
bufbomb中的test函数中调用了getbuf函数 
反汇编bufbomb可以得到getbuf函数的汇编代码:
当执行Gets时,要让程序不返回调用函数test,getbuf返回地址是指函数getbuf执行完后,跳转到这个地址处继续执行,我们应该将getbuf返回地址处的内容改成smoke函数的地址,查看bufbomb的反汇编代码smoke的函数的起始地址为0x080490ba,从buf的起始地址到返回地址总共有48个字节,前44个字节的内容无关重要,但最后4个字节我们要填入0x080490ba,由于Gets是通过换行符\n(ASCII值0x0a)界定输入终止的,所以前44个字节只要保证不含\n就行了。
L2:
bufbomb可执行文件中有一个函数fizz: 
与上一个任务类似,但是现在我们必须把我们自己的cookie值当参数传递给fizz函数,通过makecookie计算出userid的cookie值 
fizz函数的首地址为0x0804906f,除了要将这个值用相同的方式输入到getbuf中返回地址处外,还应将cookie值输入到在fizz函数中fizz函数返回地址的上一个4字节处。 
L3:
任务是getbuf不返回到test,而是执行bang函数,但是我们之前要修改global_value的值为cookie值。在程序运行期间要修改全局变量的值,全局变量没有存储在栈里面,所以我们只能通过执行赋值指令方式改变global_value的值。让程序跳转到栈中某个我们写入了指令的地址,报告完后返回,也即模拟一个函数调用,这个函数的可执行代码位于栈中。 
getbuf执行完后的返回地址改成buf的首地址,上一个栈的4字节改成bang函数的地址,这样当在getbuf中调用ret返回时程序会跳转到buf处报告上面的指令,出现ret时会跳转到bang函数中执行。 
getbuf中的buf位于栈中,而

buflab-handout实验报告 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人mh900965
  • 文件大小525 KB
  • 时间2017-12-14
最近更新