软件安全--Environment Variable and Set-UID Program Lab (2)

发布时间:2021-10-23 08:38:28

实验要求

?Task 3



?Task 4



?Task 5




?


?


?


?


?


实验环境

SEEDUbuntu(Ubuntu 16.04)


实验步骤

Task3


Step1


编译并运行以下程序。描述观察到的实验结果。该程序简单地调用了/usr/bin/env,该系统调用能够打印出当前进程的环境变量。


??? 1. 保存和编译文件task3,发现执行结果为空,没有输出环境变量。



2. 原因分析:


查询函数execve()的作用,其调用格式如下:


int execve(const char * filename,char * const argv[],char * const envp[])


第一个参数为一个可执行的有效的路径名。第二个参数系利用数组指针来传递给执行文件,argv是要调用的程序执行的参数序列,也就是我们要调用的程序需要传入的参数。envp则为传递给执行文件的新环境变量数。


因为此处,我们赋予新进程的环境变量为空,所以打印出环境变量结果为空。所以执行task3之后没有打印出环境变量。


?


??? Step2


改变execve()的调用,如下execve(“/usr/bin/env”,argv,environ),描述你的观察。


    改变之后的代码如下:


    编译后执行程序task3:


    执行后发现task3可以打印出环境变量:


?


Task4


在该任务中,我们研究当通过system()执行新程序时华环境变量如何受到影响。system()函数被用于执行命令,但是不像execve()那样直接执行一个命令。system()函数实际上执行的是如下命令:“/bin/sh -c command”,例如执行“/bin/sh”,即请求一个shell。


如果你看system()函数c数组。因此,使用system(),调用进程的环境变量被传递被新的程序/bin/sh。请编译并运行以下程序来验证这一点。


?


    编写程序并保存为task4.c


    编译程序并执行task4


    观察发现命令行打印出环境变量


    原因分析

system()的调用格式如下:


int system(const char * string)


system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。


具体可以描述为这样三个步骤:


调用fork()函数新建一个子进程;


在子进程中调用exec函数去执行command;


在父进程中调用wait去等待子进程结束。


返回值


=-1:出现错误


=0:调用成功但是没有出现子进程


>0:成功退出的子进程的id


如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。


若参数string为空指针(NULL),则返回非零值。如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为 system()调用/bin/sh失败所返回的127,因此最好能再检查errno 来确认执行成功。


Task5


Step1


编写以下可以打印出当前进程中所有环境变量的程序。


    编写程序并保存和编译文件task5。



    执行输出当前的环境变量。


Step2


编译以上程序,将其权限改为roo权限,使其成为一个Set-UID程序。



Step3


使用一般用户登录终端,使用export命令设置如下环境变量:


PATH


LD_LIBRARY_PATH


ANY_NAME


这些环境变量被设置在终端进程中。运行该Set-UID程序。在终端输入程序的名字后,终端会建立一个子进程,并用该子进程去运行程序。请检查上一步骤中设置的环境变量是否在子进程的shell中。描述观察到的结果:


???


    在终端,使用export命令设置环境变量:PATH 、LD_LIBRARY_PATH、ANY_NAME

export PATH="$PATH:/usr/local/"



export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/"



export JX="/usr/local"



?


    执行task5并在输出的环境变量中寻找刚才的值



?


?

相关文档

  • 有关伤感的爱情散文短篇
  • 哺乳期吃茭白下奶吗哺乳期吃茭白的功效有哪些
  • h61支持1600内存条吗
  • 六年级的科学手抄报图片
  • 会计个人求职信5篇最新范文
  • Java程序员进阶的 3 个层次,你处于哪个?
  • 每一个梦想都能开花结果的美文摘抄
  • 小孩子不愿意学习怎么办才好
  • 吸走腹部脂肪的茶饮与食物推荐
  • UE4安装以及vs2019的安装
  • 不打扫教室检讨书范文
  • 什么是死锁,怎样有效的避免死锁,银行家算法
  • 保护环境公益宣传海报
  • 请问把凹透镜和凸透镜放在一起会怎样.
  • 小学数学教师个人述职
  • 高德地图足迹怎么记录? 高德地图记录轨迹的技巧
  • 为什么抹了粉底会长痘痘为什么抹完粉底后皮肤会翘皮
  • 2020年某单位领导班子工作总结
  • 固态硬盘越用越慢吗
  • 高三数学教学总结
  • 小米怎么把应用商店
  • 办理公司注册的条件
  • 初中语文阅读理解之说明文阅读与现代文阅读考点分类技巧
  • 好看的六年级祖国在我心中手抄报
  • 转正员工自我鉴定
  • 追看视频邀请码是多少?追看视频邀请码在哪里填写?追看视频邀请码
  • 广东高考英语听说考试真题
  • 一年级数学培优辅差的工作计划
  • rownum的特点以及它与order by 子句的执行顺序关系
  • 高考临近 专家支招六类常见考试病应急治疗法
  • 猜你喜欢

  • 英语知识点山东省临沂市蒙阴县届九年级英语第二轮模拟试题-总结
  • 关于描写彩虹的句子
  • 【最新2018】瑟肽晏?肪滞盼?ぷ髯芙岘范文模板 (6页)
  • 启发儿童的想象力的方法
  • 东源县久社农村信用合作社企业信用报告-天眼查
  • 【2019新教材】部编版小学四年级上册语文课件-10 爬山虎的脚 (共13张PPT)[精品}
  • 大族激光:2010年度独立董事述职报告(李景镇) 2011-04-15
  • 2011届高三历史上册摸底考试试卷1
  • 配套K12smaAAA广西桂林市阳朔县阳朔中学2017-2018学年高二数学下学期期末质量检测试题
  • 跟宝宝交流的日常英语对话|日常英语对话常用句子
  • 人教版高中物理必修二曲线运动 万有引力定律 综合练*(一)
  • 人力资源总监职位说明书1
  • 2018年秋九年级数学上册第4章图形的相似第9课时相似三角形判定定理的证明(课后作业)*题课件(新版
  • 电脑没声音找不到输出设备如何解决
  • vb2005第6章 用户界面设计
  • 2018年浙江高考数学二轮复习练习:专题限时集训4 等差数列、等比数列 Word版含答案
  • 小学生家长会PPT
  • 澳佳宝奶粉好不好?澳佳宝奶粉出问题
  • 人教新起点英语二下Unit10Weather-PPT精品
  • 醋酸钠项目可行性研究报告样例参考模板
  • 隶书毛笔书法作品
  • Thread 类部分常用方法详解
  • 教科版小学四年级上册品德与社会期中测试题
  • 新闻记者如何做到“三贴*”
  • 描写爱情的歌词
  • 高一地理 4.3 经济发达地区的可持续发展教案 鲁教版
  • 人教版九年级下册语文14~16课字词积累
  • 研究性学*计划
  • 四川省2015年下半年中西医执业助理医师精选笔记考试题
  • 2021清明节发朋友圈的简短文案
  • 统计学课件--Ch05_计数资料的统计描述 60页
  • 2019年国庆节作文-关于国庆节的作文字
  • 工程力学B试卷B评分标准
  • 2019春沪教版语文四下《哥伦布竖立鸡蛋》word教学设计
  • 夏天的凤凰广场
  • 2018年国庆节给同学的祝福短信
  • 浅谈小学体育教学中应如何培养学生坚强的意志品质
  • 2015年度东台市杰雅织造厂销售收入与资产数据报告
  • Struts2 S2-061 远程命令执行漏洞(CVE-2020-17530)复现
  • 初中初二作文叙事作文:青年节
  • 2019年基于课程标准的教案设计.郑州ppt_图文.ppt.ppt
  • 肺部超声在心力衰竭应用中的研究进展
  • 电脑版