栈溢出的简单实验

本文通过一个简单的实验,展示了栈溢出攻击的过程。利用gets()函数无长度限制的特性,通过输入超过规定长度的字符,修改栈帧中的返回地址,使得程序执行转向攻击者指定的wuwu()函数。实验中借助IDA分析汇编代码,挂载虚拟机共享文件夹,编写Python脚本来构造输入,最终成功触发wuwu()函数的执行,揭示了栈溢出攻击的原理。
摘要由CSDN通过智能技术生成

实验用到first和first.c文件,first中的代码如下,可以看到用于攻击的wuwu()函数是永远不会被调用执行的;但是gets()是一直读取输入的字符直到读取\n才停止,由于gets()没有读取长度的限制,可以通过读取超出规定长度的字符来修改栈帧中的返回地址,从而达到攻击目的;在这里插入图片描述
右键first,使用IDA打开,打开之后可以看到是这样的汇编指令,按Tab键可以看地址,空格可以看反编译代码;

在这里插入图片描述
main()函数
在这里插入图片描述
wuwu()函数
在这里插入图片描述
进入运行vbox虚拟机,打开虚拟机后先挂载共享文件夹,挂载后才能使用共享文件夹中的实验素材,挂载命令:sudo mount -t vboxsf pwn ~/share (pwn是本地挂载的共享文件夹名)挂载成功后使用ls命令查看。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值