编写程序时调用第三方程序时使用的是相对路径而不是绝对路径会造成什么严重后果(Windows Linux)

news2025/1/21 12:10:37

在这里插入图片描述

简介

在编写程序时,有很多人调用第三方程序使用的是相对路径,而不是绝对路径,如下:

#!/bin/python3

import os

os.system("whoami") #调用whoami程序,查看当前用户名
#!/bin/bash

find / -name "helloworld.c"  #调用find程序,搜索根目录里名为helloworld.c的文件
#include <stdio.h>
#include <stdlib.h>

int main(void){
        system("ping -c 1 127.0.0.1");  #ping一次127.0.0.1地址
}

……

tpmtool.exe drivertracing stop

这个工具是windows自带的一个工具,它的官方解释是:

受信任的平台模块 (TPM) 技术旨在提供基于硬件的安全相关功能。 TPM芯片是一种安全的加密处理器,旨在执行加密操作。 该芯片包含多个物理安全机制以使其防篡改,并且恶意软件无法篡改TPM的安全功能

这条命令的意思是停止收集TPM驱动的程序日志

这条命令是没什么问题,但是运行这个程序时,程序本身启动了一个新的cmd进程,然后调用了另一个程序,这就造成了一些问题,下面讲实例的时候会详细说

关于什么是绝对路径和相对路径

我举一个例子,这是绝对路径

/usr/bin/whoami
C:\Windows\System32\calc.exe

而这是相对路径

whoami
calc.exe

一个是指定路径下的,一个是根据当前环境变量调用的,那么,环境变量是什么

什么是环境变量

在这里插入图片描述

任何计算机编程语言的两个基本组成部分,变量和常量。就像数学方程式中的自变量一样。变量和常量都代表唯一的内存位置,其中包含程序在其计算中使用的数据。两者的区别在于,变量在执行过程中可能会发生变化,而常量不能重新赋值

这里只举几个常见的环境变量

$PATH

包含了一些目录列表,作用是终端会在这些目录中搜索要执行的程序
查看$PATH环境变量

echo $PATH

在这里插入图片描述

假如我要执行whoami程序,那么终端会在这个环境变量里搜索名为whoami程序

搜索的目录如下

/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/local/games
/usr/games

在这里插入图片描述

而whoami程序在/usr/bin目录下,终端会执行这个目录下的whoami程序

在这里插入图片描述

而windows的PATH环境变量在这可以看到

在这里插入图片描述

在这里插入图片描述

$HOME

包含了当前用户的主目录

echo $HOME

在这里插入图片描述

$PWD

包含了当前用户目前所在的目录位置

在这里插入图片描述

关于环境变量的更多信息:

https://en.wikipedia.org/wiki/Environment_variable

编写程序时调用第三方程序时使用的是相对路径而不是绝对路径会造成什么严重后果

Windows

在介绍了什么是绝对路径和相对路径,以及什么是环境变量后,现在开始进入主题了,我用上面介绍的windows自带的工具tpmtool.exe来演示

tpmtool.exe drivertracing stop

上面说过,这条命令的作用是停止收集TPM驱动的程序日志的,我们在cmd里运行这条命令

在这里插入图片描述

工具弹出错误了,不过并不重要,我们只是拿这个工具做演示,能运行即可
接下来我们要用Procmon工具来监视tpmtool.exe这个工具,Procmon工具下载地址:

ht去掉字符tps://learn.microsoft.com/en-us/sysinternals/downloads/procmon

双击启动这个工具,点击筛选

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

设置完成之后,删除当前监听的内容

在这里插入图片描述

在这里插入图片描述

然后回到cmd,重新运行命令

在这里插入图片描述

然后返回Procmon,在下面可以看到tpmtool工具的一些奇怪的调用

在这里插入图片描述

这个工具创建了一个子进程,调用了cmd程序,为了清楚它做了什么,我们将cmd也加入过滤

在这里插入图片描述

在这里插入图片描述

添加完之后在下面可以看到调用

在这里插入图片描述

tpmtool创建了一个子进程cmd,然后这个cmd执行了一些命令,但是并没有路径显示,我们双击查看详细信息

在这里插入图片描述

在这里插入图片描述

tpmtool工具创建了一个子进程调用cmd,并执行了logman.exe stop TPMTRACE -ets这条命令
但是,问题就出在这里,它执行这条命令时并没有指定logman.exe的绝对目录,只是声明了logman.exe

假如我有一个名叫ogman.exe的恶意软件会怎么样

这里我将计算器来当作恶意软件做演示,现在将计算器移动到当前文件夹下

copy C:\Windows\System32\calc.exe .

在这里插入图片描述

然后将计算器更名为logman.exe,这里我们并不需要改变当前的环境变量,只需要保证logman.exe程序在当前运行目录下即可

move calc.exe logman.exe

在这里插入图片描述

然后运行一开始的命令

tpmtool.exe drivertracing stop

在这里插入图片描述

可以看到,成功的弹出了计算器程序

Linux

在这个目录下有一个c语言的程序

在这里插入图片描述

查看源码

在这里插入图片描述

这个程序只是执行了一个系统命令curl,这个工具的作用是获取指定网站的信息

在这里插入图片描述

但是和上面windows分析的那个程序一样,没有指定工具的绝对路径

我们在当前文件夹里创建一个名为curl的文件

echo "pwd" > curl
chmod +x curl

然后改变当前终端的环境变量

PATH=$PWD:$PATH

$PATH环境变量=当前文件夹

然后执行程序

在这里插入图片描述

成功执行了pwd程序

总结

很多小细节的错误堆在一起可能会造成一个大的错误,在做hackthebox和tryhackme的机子时,经常会利用这种方式来对机子进行提权

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/151825.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day10|239. 滑动窗口最大值、347.前 K 个高频元素

239. 滑动窗口最大值 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值 。 示例 1&#xff1a; 输入&#xff1a;nums [1,3…

如何修改视频MD5的格式?这些方法值得你收藏

MD5实际上是计算机安全领域中广泛使用的一种散列函数&#xff0c;可以用来保护消息的完整性&#xff0c;简单来说就是类似于我们的指纹&#xff0c;可以说MD5是每个文件的“数字指纹”。比如&#xff1a;我们在平台上传一些热门视频&#xff0c;平台会自动识别视频的MD5值&…

嵌入式 LINUX 驱动开发 day01 第一个内核模块程序 多文件编译为一个程序, 内核模块参数, 内核模块依赖

1.第一个内核模块程序 ( 记得配置自己的交叉编译的工具,) 首先两个文件 vser.c Makefile (记得大写的M) vser.c #include <linux/init.h> //内核初始化头文件 #include <linux/module.h> //内核模块文件 #include <linux/kernel.h> //&…

Java基础算法每日5道详解(6)

112. Path Sum 路径总和 Given the root of a binary tree and an integer targetSum, return true if the tree has a root-to-leaf path such that adding up all the values along the path equals targetSum. A leaf is a node with no children. Example 1: Input: ro…

html+css实现一个响应式管理平台架构模板

文本将会带你使用htmlcss实现一个响应式的管理平台架构模板&#xff0c;目前来说市面上的管理平台架构模板大同小异&#xff0c;文本的知识点都会符合场景所需。 目录 1、管理平台的架构内容 2、顶部的布局 3、下半部分布局 4、左侧菜单区域实现 5、右侧主体区域实现 …

前端重新部署如何通知用户刷新网页?

我把我掘金的文章同步一份给CSDN 1.目标场景 有时候上完线&#xff0c;用户还停留在老的页面&#xff0c;用户不知道网页重新部署了&#xff0c;跳转页面的时候有时候js连接hash变了导致报错跳不过去&#xff0c;并且用户体验不到新功能。 2.思考解决方案 如何去解决这个问…

顶象助力绿球金科打造App低碳出行场景

“低碳出行”、“碳中和”、“碳惠普”正在成为近几年的科技热词之一。 自2020年9月&#xff0c;中国向世界许下“力争2030年前实现碳达峰&#xff0c;2060年前实现碳中和”的承诺以来&#xff0c;一场围绕绿色节能、低碳减排的变革正在席卷各行各业。 “碳中和”已经成为时代…

如何让SCI期刊审稿人,理解你的文章? - 易智编译EaseEditing

首先需要对论文进行全文润色 对于发表论文来说&#xff0c;进行润色是必须的&#xff0c;正因为SCI论文翻译要求高难度大&#xff0c;无论笔译还是口译都一定要有过硬的基本功&#xff0c;知识面要足够宽广&#xff0c;专业综合能力要求高。 所以当一篇论文的整体结构不到位&…

凯恩帝机床联网

一、设备信息确认 1、确认型号 数控面板拍照确认&#xff1a; 此系统为&#xff1a;K1TCi 注&#xff1a;凡是系统中带i的&#xff0c;基本上都含网口。 2、确认通讯接口 网口常见位置&#xff0c;XS92&#xff08;丝印标号&#xff09;&#xff0c;可通过这个确认&#x…

PnetLab模拟器安装锐捷镜像

安装准备&#xff1a; 1.安装完成pnetlab&#xff0c;这里不过多叙述&#xff1b; 2.在锐捷的网站下载好模拟器镜像&#xff08;目前只支持Switch和Router&#xff09;&#xff0c;下载地址&#xff1a;https://www.ruijie.com.cn/fw/wd/88899/ 官网下载后的内容包括下面几个…

Linux umount报错:device is busy

执行nfs卸载命令umount /mnt&#xff0c;报错target is busy. 或device is busy可以按以下步骤检查&#xff1a;退出要卸载挂载的目录&#xff0c;再执行卸载挂载cd ../umount /mnt找出占用目录的端口&#xff0c;kill端口fuser -m /mnt/kill -9 端口umount /mnt停止nfs服务&am…

计算机基础——操作系统

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.操作系统 1.操作系统简介 2.操作系统的主要功能 &#xff08;1&#xff…

【Kotlin】字符串操作 ② ( 字符串替换函数 replace | 字符串比较操作符 == 和 === | 字符串遍历 forEach )

文章目录一、字符串替换函数 replace二、字符串比较操作符 和 三、字符串遍历 forEach一、字符串替换函数 replace 字符串替换函数 replace 函数原型如下 : /*** 返回一个新字符串&#xff0c;通过替换此字符序列中匹配给定正则表达式的每个子字符串获得* 用给定的[替换]。**…

一个芯片工程师的ADC学习笔记 (二)

众所周知&#xff0c;ADC主要用于对模拟信号进行数字采集&#xff0c;以进行数据处理。我们周围的信号一般都是不断变化的模拟量&#xff0c;如光、温度、速度、压力、声音等。然而&#xff0c;我们大多数人都使用数字设备。如果我们想方便地使用和处理信息&#xff0c;就需要将…

【机器学习】关联规则挖掘算法 + 三大案例实战 + Apriori算法 + Python代码实现

文章目录一、关联规则概述1.1 关联规则引入1.2 关联规则相关概念介绍1.2.1 样本、事务、项集、规则1.2.2 支持度、置信度1.2.3 提升度1.2.4 所有指标的公式二、Python实战关联规则2.1 使用 mlxtend 工具包得出频繁项集与规则2.1.1 安装 mlxtend 工具包2.1.2 引入相关库2.1.3 自…

MP3解码算法原理解析

一&#xff1a;MP3编解码整体结构介绍 看懵逼了是吧。这里面有很多概念需要一一讲解。 比特流&#xff1a;比特流是一种内容分发协议。它采用高效的软件分发系统和点对点技术共享大体积文件&#xff08;如一部电影或电视节目&#xff09;&#xff0c;并使每个用户像网络重新分配…

记录--微信调用jssdk--Invalid Signature, updateAppMessageShareData: denied等问题

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 最近在做安卓内嵌入H5活动页拉新活动&#xff0c;遇到的棘手问题记录下&#xff0c; 一是为了日后遇到同样问题好回顾&#xff0c;二是希望能帮到有同样问题的兄弟。 废话不多说&#xff0c;先从最棘手…

【高阶数据结构】封装Map和Set

&#x1f308;欢迎来到数据结构专栏~~封装Map和Set (꒪ꇴ꒪(꒪ꇴ꒪ )&#x1f423;,我是Scort目前状态&#xff1a;大三非科班啃C中&#x1f30d;博客主页&#xff1a;张小姐的猫~江湖背景快上车&#x1f698;&#xff0c;握好方向盘跟我有一起打天下嘞&#xff01;送给自己的一…

蓝桥杯Python组排列和组合、二进制讲解

目录 一、排列 1、Python 的排列函数 permutations() 2、permutations() 按什么顺序输出序列&#xff08;重要⭐&#xff09; 3、易错点 二、组合 1、Python的组合函数combinations() 2、注意内容 三、手写排列和组合代码 1、手写排列代码&#xff08;暴力法&#xff…

【PWA学习】2. 使用 Manifest, 让你的 WebApp 更 Native

引言 我们知道&#xff0c;在 chrome(等一些现代浏览器)中&#xff0c;你可以将访问的网站添加到桌面&#xff0c;这样就会在桌面生成一个类似 “快捷方式” 的图标&#xff0c;当你点击该图标时&#xff0c;便可以快速访问该网站(Web App) 我们以 demo 为例&#xff0c;其添加…