【网络攻防技术】实验六——环境变量与set-uid实验

一、实验题目

本实验室的学习目标是让学生了解环境变量如何影响程序以及系统行为。环境变量是一组动态命名值,可以影响正在运行的进程将在计算机上运行。大多数操作系统都使用它们,因为它们是1979年引入Unix。尽管环境变量会影响程序行为,但它们是如何实现的这一点很多程序员都不太理解。因此,如果程序使用环境变量程序员不知道它们被使用,程序可能有漏洞。
在本实验室中,学生将了解环境变量是如何工作的,它们是如何从父进程到子进程,以及它们如何影响系统/程序行为。我们特别感兴趣的是如何环境变量影响Set-UID程序的行为,这些程序通常是特权程序。
本实验室涵盖以下主题:
•环境变量
•SET-UID程序
•安全地调用外部程序
•能力泄漏
•动态加载程序/链接器

二、实验步骤及结果

Task1:Manipulating Environment Variables

(1)使用printenv命令输出环境变量输入命令printenv,得到如下结果(截取部分):
在这里插入图片描述

使用printenv命令查看PATH环境变量,得到如下结果:
在这里插入图片描述

(2)使用export和unset设置或删除环境变量:
① 使用export设置环境变量,使用echo显示,$符号实际作用是将变量转换成字符,方便输出。
在这里插入图片描述

② 使用unset删除环境变量
在这里插入图片描述

Task 2: Inheriting environment variables from parents

(1)编译C文件,将结果保存为a.out文件将代码保存为demo.c文件并放在桌面。进入桌面路径,编译C文件。
在这里插入图片描述

执行保存结果的a.out文件,查看代码的运行结果,发现为各个环境变量的值(截取部分):
在这里插入图片描述

(2)按题意,将child process中printenv()注释,将process中parent printenv()取消注释,重新保存编译C文件
在这里插入图片描述
在这里插入图片描述

执行保存结果的b.out文件,查看代码的运行结果,发现为各个环境变量的值(截取部分)。
在这里插入图片描述

(3)比较两者结果:
将a.out、b.out文件的结果分别保存为child和parent文件,再使用diff命令比较,发现两者除了文件名外完全相同。这说明子进程环境变量会继承父环境变量。进一步查阅资料了解到,子进程自父进程继承到进程的资格、环境、堆栈、内存等,但子进程所独有的是不同的父进程号、自己的文件描述符和目录流的拷贝、在tms结构中的系统时间、不继承异步输入和输出等。
在这里插入图片描述

Task 3: Environment variables and execve()

(1)编

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值