当前位置:网站首页>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
创建漏洞程序需要打开的文件
执行漏洞程序
因为漏洞程序打开文件后没有关闭,并且泄露了文件描述符。我们可以控制这个文件
边栏推荐
- Core Tower Electronics won the championship in the Wuhu Division of the 11th China Innovation and Entrepreneurship Competition
- 2022.07.14_每日一题
- 2022.07.14_Daily Question
- opencv、pil和from torchvision.transforms的Resize, Compose, ToTensor, Normalize等差别
- 【第四章】详解Feign的实现原理
- 第十六章:构建n(5,7)阶素数幻方
- 2. (1) Chained storage of stack, operation of chain stack (illustration, comment, code)
- 【 TA - frost Wolf _may - "one hundred plan" 】 art 2.3 hard surface
- SQLite数据库连接字符串
- QFileInfo常规方法
猜你喜欢

Web浏览器工作流程解析

2022.07.13_Daily Question

One of the small practical projects - food alliance ordering system

双倍数据速率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random Access Memory, DDR SDRAM)- 逻辑描述部分

HighTec 的安装与配置

2022.07.24_Daily Question

MySQL安装到最后一步 write configuration file 失败 怎么办?及后安装步骤

SCI写作指南

Zotero | Zotero translator plugin update | Solve the problem that Baidu academic literature cannot be obtained

金融租赁业务
随机推荐
postgresql源码学习(33)—— 事务日志⑨ - 从insert记录看日志写入整体流程
Chapter 17: go back to find the entrance to the specified traverse, "ma bu" or horse stance just look greedy, no back to search traversal, "ma bu" or horse stance just look recursive search NXM board
那些破釜沉舟入局Web3.0的互联网精英都怎么样了?
【网络攻防】常见的网络攻防技术——黑客攻防(通俗易懂版)
基于交替迭代法的交直流混合系统潮流计算matlab程序iEEE9节点系统算例
2022.07.12_Daily Question
嵌入式系统驱动初级【2】——内核模块下_参数和依赖
2022.07.14_每日一题
gstreamer's caps event and new_segment event
2022.07.29_Daily Question
基金投顾业务
shell之条件语句(test、if、case)
【Go语言刷题篇】Go完结篇函数、结构体、接口、错误入门学习
第十六章:构建n(5,7)阶素数幻方
【微服务】 微服务学习笔记二:Eureka注册中心的介绍及搭建
[PSQL] SQL基础教程读书笔记(Chapter1-4)
DAY18:XSS 漏洞
基于LSTM的诗词生成
文件 - 07 删除文件: 根据fileIds批量删除文件及文件信息
van-uploader uploads images, and cannot preview the image using base64 echo