当前位置:网站首页>Environment_Variable_and_SetUID
Environment_Variable_and_SetUID
2022-07-31 06:26:00 【专注web0年】
准备
User ID: seed, Password: dees
User ID: root, Password: seedubuntu
下载实验文件
实验任务
任务1
控制环境变量
env
按顺序执行下面命令
env | grep PWD
unset PWD
env | grep PWD
export PWD=sdajf
env | grep PWD
export MY_ENV=myenv
env | grep MY_ENV
任务2
编译程序
gcc myprintenv.c
运行程序,并将结果输出到file里面
a.out > file1
注释case 0
里面的printenv()
,取消注释下面的printenv()
编译程序
gcc myprintenv.c
运行程序,并将结果输出到file里面
a.out > file2
用命令diff
比较
diff file1 file2
无输出,说明父进程和子进程环境变量一样
任务3
编译myenv.c,查看输出,发现没有
将execve()
更改为下面内容
execve("/usr/bin/env", argv, environ);
输出了环境变量
新程序通过传参,得到环境变量并输出
任务4
创建verify.c文件
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("/usr/bin/env");
return 0 ;
}
编译并输出
任务5
创建task5.c文件
touch task5.c
写入内容如下
#include <stdio.h>
#include <stdlib.h>
extern char **environ;
int main()
{
int i = 0;
while (environ[i] != NULL) {
printf("%s\n", environ[i]);
i++;
}
}
编译并设置权限
gcc -o foo task5.c
sudo chown root foo
sudo chmod 4755 foo
修改环境变量
查看程序的环境变量是否被修改
发现
LD_LIBRARY_PATH
没有被修改,这个是因为动态链接器的保护
有效ID和真实ID不一样时,动态链接器会忽略LD_LIBRARY_PATH
的值
任务6
注意使用pwd获得当前路径
再把当前路径加到PATH环境变量中链接到zsh后,获得root权限
任务7
完成准备工作
用seed用户执行,执行了我们写的sleep()
将其设置为Set-UID root程序,执行原本的sleep()
用root执行,执行了我们写的
sleep()
root的密码应该是seedubuntu,但是不对,所以我用sudo su root
获得root将其设置为Set-UID user1程序,用seed用户执行,执行原本的
sleep()
第一,euid和uid都为seed,LD_PRELOAD 环境变量没有被忽略,所以链接的是 libmylib.so.1.0.1,执行我们写的sleep()
第二个,euid为root,uid为seed,不相同,受动态链接器保护,执行正常的sleep()
第三个,euid 等于uid,均为 root
第四个,euid为uer1,uid为seed,不相同
任务8
第一步
利用漏洞删除没有权限删除的文件
创建没权限删除的文件进行攻击,成功删除文件
第二步
按要求更改源代码
重复上一步
攻击失败,因为把system()
换成了execve()
,前者会把数据当成命令执行,后者不会。execve()
接收的数据就是参数,不会当成代码执行
任务9
创建漏洞程序需要打开的文件执行漏洞程序
因为漏洞程序打开文件后没有关闭,并且泄露了文件描述符。我们可以控制这个文件
边栏推荐
- 【Star项目】小帽飞机大战(七)
- 什么是半波整流器?半波整流器的使用方法
- 2022.07.18_每日一题
- 04-SDRAM: Read Operation (Burst)
- 那些破釜沉舟入局Web3.0的互联网精英都怎么样了?
- HighTec 的安装与配置
- Postgresql source code learning (34) - transaction log ⑩ - full page write mechanism
- 【Go语言刷题篇】Go完结篇函数、结构体、接口、错误入门学习
- Leetcode952. Calculate maximum component size by common factor
- How to set the computer password?How to add "safety lock" to your computer
猜你喜欢
单点登录 思维导图
2. (1) Chained storage of stack, operation of chain stack (illustration, comment, code)
tidyverse笔记——dplyr包
'vite' is not an internal or external command, nor is it a runnable program or batch file.
电压源的电路分析知识分享
2022.07.14_Daily Question
Conditional statements of shell (test, if, case)
基于交替迭代法的交直流混合系统潮流计算matlab程序iEEE9节点系统算例
【Go语言入门教程】Go语言简介
解决安装 Bun 之后出现 zsh compinit: insecure directories, run compaudit for list. Ignore insecure directorie
随机推荐
navicat 新建数据库
Difficulty comparison between high concurrency and multithreading (easy to confuse)
零样本学习&Domain-aware Visual Bias Eliminating for Generalized Zero-Shot Learning
线程中断方法
2022.07.12_Daily Question
DAY18:XSS 漏洞
mysql的建表语句_三种常用的MySQL建表语句
Gradle remove dependency demo
Obtaining server and client information
2022.07.12_每日一题
【科普向】5G核心网架构和关键技术
【C语言项目合集】这十个入门必备练手项目,让C语言对你来说不再难学!
任务及任务切换
Install the gstreamer development dependency library to the project sysroot directory
tidyverse笔记——管道函数
毫米波技术基础
电脑开机密码怎么设置?如何给你的电脑加上“安全锁”
剑指offer(一)
2022.07.15_每日一题
HighTec 的安装与配置