缓冲区溢出攻击实战

本文详细介绍了缓冲区溢出攻击的原理,通过实验分析了攻击过程,包括函数调用栈的构建、地址覆盖等关键环节。通过实际操作演示了攻击程序的编写与执行,强调了地址随机化技术的重要性,并分享了实验中遇到的问题及解决方法,旨在加深对缓冲区溢出攻击的理解。
摘要由CSDN通过智能技术生成

一、   实验目的

通过实验,使我们对缓冲区溢出攻击的原理更加了解,对此攻击方式更加得心应手。

二、   实验原理

当向缓冲区里写入的数据超过了为其分配的大小时,就会发生缓冲区溢出。攻击者可以利用缓冲区溢出来窜改进程运行时栈,从而改变程序的正常流向。

三、   实验分析

1)  main函数在调用f函数前,首先将参入的参数压入栈中;

2)  接着,将当前程序执行的下一个的位置EIP加入栈中,后面f函数返回时用;

3)  进入f函数,f函数首先将当前的EBP压入栈中,接着mov esp, ebp(将EBP指向当前的栈顶),接着以EBP为基础构建自己的函数帧结构。函数帧结构中包含当前函数的局部变量(攻击的示例程序的buffer变量及在这里面)

4)  在f函数执行完成后,会将栈中的EBP值弹出,恢复到EBP寄存器中,还原ESP寄存器,接着弹出EIP变量,程序根据EIP变量指向的位置接着执行main函数后面的程序部分。

图1

main函数调用f函数的栈结构如下图所示:

图2

对buf进行数据拷贝,得到的结果如下图所示:

图3

四、   实验步骤

首先,就像教程上做的,将32位编程的一些库加进去:

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值