然后,编译exploit.c程序

先运行攻击程序exploit,再运行漏洞程序stack,观察结果:
可见,通过攻击,获得了root权限!
1、按照实验步骤进行操作,攻击漏洞程序并获得root权限。(见上图)
2、通过命令”sudo sysctl -w kernel.randomize_va_space=2“打开系统的地址空间随机化机制,重复用exploit程序攻击stack程序,观察能否攻击成功,能否获得root权限。

3、将/bin/sh重新指向/bin/bash(或/bin/dash),观察能否攻击成功,能否获得root权限。

(1)要求把“stack.c”文件保存到 /tmp 目录下,第一次实验没有打开/tmp目录,应该输入cd /tmp进入tmp目录下
(2)练习三一开始没有领会意思,把实验重新做了一遍,后来发现只要设置一下sh程序即可。缓冲区溢出攻击
通过做实验了解了缓冲区溢出漏洞的机制。
缓冲区溢出是指程序向一个已分配内存的固定长度缓冲区写数据,使得数据超出了缓冲区的边界。用心不良的用户就可以利用这个漏洞改变程序执行的方向,甚至可以执行一段恶意的代码。缓冲区溢出攻击本质上说,漏洞的根源是计算机的内存中,数据和指令(例如函数的返回地址)是一起存储的,这样数据部分的溢出可能会影响到程序指令部分的执行,例如函数的返回地址指令就有可能会被改写。
还了解一些关于缓冲区溢出的保护机制。
Ubuntu和其它基于Linux内核的系统中,目前都使用内存地址随机化的机制来初始化堆栈,这将会使得猜测具体的内存地址变得十分困难,所以在本试验中,用下列命令关闭内存随机化机制:sysctl -w kernel.randomize_va_space=0
GCC编译器也会执行一种栈保护机制来阻止缓冲区溢出,所以我们在编译代码时需要用 –fno-stack-protector 关闭这种机制。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-35617-2.html
忍无可忍
当时买养老金就好了
于是俺们厂里买了好多跟废品差不多的浙商设备