缓冲区溢出漏洞实验

一、实验简介

      缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。

二、初始设置

Ubuntu和其他一些Linux系统中,使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址,这使得猜测准确的内存地址变得十分困难,而猜测内存地址是缓冲区溢出攻击的关键。因此本次实验中,我们使用以下命令关闭这一功能:sudo sysctl -w kernel.randomize_va_space=0。

此外,为了进一步防范缓冲区溢出攻击及其它利用shell程序的攻击,许多shell程序在被调用时自动放弃它们的特权。因此,即使你能欺骗一个Set-UID程序调用一个shell,也不能在这个shell中保持root权限,这个防护措施在/bin/bash中实现。

linux系统中,/bin/sh实际是指向/bin/bash或/bin/dash的一个符号链接。为了重现这一防护措施被实现之前的情形,我们使用另一个shell程序(zsh)代替/bin/bash。下面的指令描述了如何设置zsh程序:

三、漏洞程序

通过代码可以知道,程序会读取一个名为“badfile”的文件,并将文件内容装入“buffer”。

编译该程序,并设置SET-UID。命令如下:

GCC编译器有一种栈保护机制来阻止缓冲区溢出,所以我们在编译代码时需要用 –fno-stack-protector 关闭这种机制。

而 -z execstack 用于允许执行栈。

四、攻击程序

现在我们要得到shellcode在内存中的地址,结果如图:

五、攻击结果

编译exploit.c程序:

先运行攻击程序exploit,再运行漏洞程序stack,观察结果:

可见,通过攻击,获得了root权限!

通过命令”sudo sysctl -w kernel.randomize_va_space=2“打开系统的地址空间随机化机制,重复用exploit程序攻击stack程序:

提示Segmentation fault,无法获得root权限!

转载于:https://www.cnblogs.com/werr370/p/9028977.html

2017-2018-2 20179306 《网络攻防技术》第十周作业相关推荐

  1. 2017-2018-2 20179305《网络攻防技术》第二周作业

    Q1 国内外著名黑客介绍 1.国内著名黑客黄鑫简介 黄鑫,网名木马冰河,毕业于西安电子科技大学,职业是网络安全网站"安全焦点"冰河木马软件的创作者. 99年,木马虽然已经在黑客中间 ...

  2. 2018-2019-2 20189215 《网络攻防技术》第九周作业

    教材<网络攻防技术>第九.十章学习 第9章 恶意代码安全攻防 9.1 恶意代码基础知识 恶意代码是指使计算机按照攻击者的意图执行以达到恶意目标的指令集.类型包括:计算机病毒.蠕虫.恶意移动 ...

  3. 2017-2018-2 20179207 《网络攻防技术》第二周作业

    <网络攻防技术>教材 一.作业 第一章实践作业 攻击目标:获取异性同学的生肖.星座.出生日期.生辰八字. 攻击对象选择:选取一个仅仅认识但不熟知的异性同学.知道其微信. 所知信息:在微信朋 ...

  4. 20189311《网络攻防》第十周作业

    冯·诺依曼体系结构和图灵机 冯·诺依曼体系结构 美籍匈牙利数学家冯·诺依曼于1946年提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存. 冯·诺依曼体系结构冯·诺依曼 ...

  5. 2017-2018-2 20179306 《网络攻防技术》第二周作业

    黑客信息 国内黑客介绍-万涛(老鹰) 老鹰,男,中国特色安全文化/黑客文化倡导者,祖籍广东广州东山区(现越秀区).出生于一个铁路职工家庭.青少年时期兴趣爱好广泛,喜爱绘画.文学.政治.历史. 大学在北 ...

  6. 20189317 《网络攻防技术》 第二周作业

    一.黑客信息 (1)国外黑客 1971年,卡普尔从耶鲁大学毕业.在校期间,他专修心理学.语言学以及计算机学科.也就是在这时他开始对计算机萌生兴趣.他继续到研究生院深造.20世纪60年代,退学是许多人的 ...

  7. 2018-2019-2 20189212 《网络攻防技术》第二周作业

    一.课程基础 1.Windows(BAT)编程 批处理常见命令: echo表示显示此命令后的字符 echo off 表示在此语句后所有运行的命令都不显示命令行本身 @与echo off相象,但它是加在 ...

  8. 2018-2019-2 20189212 《网络攻防技术》第九周作业

    <网络攻防>教材学习 第9章 恶意代码安全攻防 9.1恶意代码基础知识 9.1.1恶意代码定义与分类 恶意代码指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集. 典型的攻击目标包括 ...

  9. 2017-2018网络攻防技术第八周作业

    课本第八章总结 1.Linux操作系统发展与现状 在统一内核代码库的基础上,Linux开源社区根据不同用户群体的需求,也发展出数量众多的操作系统发行版,流行的包括Ubuntu.Debian.Fedor ...

  10. 2017-2018-2 20179202《网络攻防技术》第一周作业

    a. 你对师生关系的理解,希望是哪种关系? 1.师生关系寓于传道与受道的平衡中. 学生对老师的信任.依赖源于自身对知识的渴求与崇敬,而老师就如同知识与真理的化身,是引导学生进入学习的主要途径. 2.师 ...

最新文章

  1. N-MOS 2N7002晶体管
  2. ADA4531 fA级静电放大器
  3. 转换输入文本中的回车和空格
  4. mongodb 部署
  5. java 添加注解_你知道Java中的package-info的作用吗?
  6. 苹果x为什么是android,技术角度分析:这就是苹果手机和安卓手机为什么有差距的主要原因...
  7. android收货地址整理
  8. 使用Python列表方法模拟约瑟夫环问题
  9. VS2010复制项目
  10. python获取程序运行路径
  11. Windows下一个MySQL有些错误的解决方法
  12. 邮局用计算机对信件进行自动分拣,计算机组成结构习题集
  13. matlab win10 精简版下载,完美解决win10无法运行matlab问题
  14. 微软商店下载的python 的 pip 不能修改 config 的解决方法
  15. php 验证手机号规则,PHP最完整的验证手机号码
  16. ASP.net和ASP的区别
  17. python flappy bird游戏
  18. python设计一个三维向量类_一个简单的三维向量类
  19. Linux烤机脚本测试io,sipp测试脚本用于媒体测试
  20. iOS 玩不转的GCD第0课时

热门文章

  1. linux 下一条命令查出arp
  2. Js将字符串转数字的方式
  3. 织梦后台对应的php文件,织梦DedeCMS后台文件列表按文件名排序的方法
  4. Spring 入门程序
  5. 软件测试工程师-Python语言
  6. 软件开发向大数据开发过渡_如何过渡到开发人员关系职业
  7. 样条 开源_成年人在开源社区中是什么样的?
  8. 把冰卖给爱斯基摩人_爱斯基摩人使用冰屋应用程序来节省资源
  9. (24)HTTP 方法:GET 对比 POST
  10. 推荐 | 作为IDEA的死忠粉,这样设置,效果棒棒哒!