Linux的/proc/self/学习

文章目录

    • /proc目录
    • /proc/self的使用

在做SSTI模板注入的CTF题中,发现有师傅提到可以用/proc/self这个目录获取flag,所以也来学习一波主要参考.

(我才知道😁😁😁)可以通过/proc/$pid/来获取指定进程的信息,例如内存映射、CPU绑定信息等。详细来说,如果某个进程想获取本进程的系统信息,就可以通过进程的pid编号来访问/proc/$pid/目录,但是这个方法不仅需要获取进程的pid编号,且在fork、daemon等情况下pid还会变化(属实有点太懂,fork是创建进程,daemon是守护进程,合起来就不知道具体啥情况了,哈哈😅😅😅)。为了更加方便的获取本进程的信息,linux提供了/proc/self/目录,在这个目录下,不同的进程访问该目录获取的信息是不同的,内容等价于/proc/$pid/

/proc目录

proc文件系统是一个伪文件系统,它的存在是为了在运行时访问内核内部数据结构、改变内核设置的机制,它只存在于内存中,不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。

在该目录下除了/proc/self/目录,还有一些以数字命令的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc目录下,以进程的pid号为目录名,它们是读取进程信息的接口。self目录则是读取进程本身的信息接口,是一个link
在这里插入图片描述
/proc目录中是一些与进程有关的目录,再下一级目录/proc/具体pid中是其进程本身相关的文件。下面简要介绍/proc/100目录下的常见文件夹和文件,其中有些文件是每个进程都会具有的:
在这里插入图片描述

  1. cmdline
    cmdline文件存储启动当前进程的完整命令,但僵尸进程目录中的此文件不包含任何信息,可以通过查看cmdline目录获取启动指定进程的完整命令:cat /proc/1303/cmdline
    在这里插入图片描述

  2. cwd
    cwd文件是一个指向当前进程运行目录的符号链接,可以通过查看cwd文件获取指定进程环境的运行目录。
    在这里插入图片描述
    可见PID为1303的进程的运行目录为/home/kali,然后我们可以查看该运行目录。

  3. exe
    exe是一个指向启动当前进程的可执行文件(完整路径)的符号链接,通过exe文件,我们可以获取指定进程的可执行文件的完整路径。
    在这里插入图片描述

  4. environ
    environ文件存储着当前进程的环境变量列表,彼此见使用空字符(NULL)分隔,变量用大写字母表示,其值用小写字母表示。可以通过environ目录来获取指定进程的环境变量信息:cat /proc/1303/environ
    在这里插入图片描述

  5. fd(*)
    fd目录里面包含当前进程打开的每一个文件的描述符,这些文件描述符是指向实际文件的一个符号链接,即每个通过这个进程打开的文件都会显示在这里。所以我们可以通过fd目录的文件知道该进程打开的文件路径和文件内容
    在这里插入图片描述
    查看指定进程打开的某个文件的内容,cat /proc/1303/fd/3
    在这里插入图片描述
    fd这个文件目录比较重要,在linux系统中,如果一个程序open()打开了一个文件,但是始终没有关闭它,即使从外部(如os.remove(file_path))删除该文件后,访问/proc/self/fd,该目录下仍然存在被删除的文件的文件描述符,通过这个文件描述符我们可以得到被删除的文件的内容。

/proc/self的使用

  • 获取启动当前进程的完成命令:cat /proc/self/cmdline
    在这里插入图片描述

  • 获取目标当前进程的运行目录:ls al /proc/self/cwd;获取目标当前进程的运行目录里的文件:ls /proc/self/cwd
    在这里插入图片描述
    在这里插入图片描述

    当不知道目标网站的Web路径或者 当前路径时,经常用这招。

  • 获得当前进程的可执行文件的完整路径:ls -al /proc/self/exe
    在这里插入图片描述

    这里应该是ls命令的地址

  • 获取当前环境变量:cat /proc/self/environ
    在这里插入图片描述

  • 获取当前进程打开的文件内容:cat /proc/self/fd/{id}

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

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

相关文章

Kioptrix-3

靶场下载地址 https://download.vulnhub.com/kioptrix/KVM3.rar 信息收集 # Nmap 7.94 scan initiated Thu Dec 21 21:52:25 2023 as: nmap -sn -oN live.nmap 192.168.1.0/24 Nmap scan report for 192.168.1.1 (192.168.1.1) Host is up (0.00048s latency). MAC Address:…

AI绘画中VAE压缩图像

介绍 在Stable Diffusion中,所有的去噪和加噪过程并非在图像空间直接进行,而是通过VAE模块将图像编码到一个低维空间。 这个低维空间的“分辨率”低于原始图像空间,有利于快速地完成加噪和去噪过程。 最后再将编码空间中的噪声表示解码恢复为图像空间,完成去噪或加噪操作。 …

【Element】el-table 使用 el-table-infinite-scroll 插件实现滚动加载

虽然 el 官方提供了 Infinite Scroll 无限滚动 组件 但是却不支持 el-table 组件,这就很难受了,还好已经有大佬写好了插件,并且支持 element-plus/infinite-scroll 组件的所有选项。 el-table-infinite-scroll el-table-infinite-scroll 看…

【数据结构入门精讲 | 第十二篇】考研408、公司面试树专项练习(一)

在上一篇文章中我们介绍了树的知识点,在这一篇中我们将进行树的专项练习。 目录 判断题选择题填空题二叉树的宽度R6-1 是否二叉搜索树 方法介绍: 已知中序及后序,求前序 如后序为DABEC,中序为DEBAC,求前序 则后序倒着写&#xff…

北京Modbus转Profinet网关的作用

背景:随着工业自动化的快速发展,各种仪器设备迅速崛起,但是在仪器出厂前需要很多的零部件来构建出需要的设备及功能,由于自动化设备的零部件不是统一生产商供应的,这样很容易出现某个零部件的通讯协议不匹配&#xff0…

搜索二叉树(超详解)

文章目录 前言查找搜索二叉树的结构insertfinderase递归版本Findinserterase 二叉树的拷贝问题搜索二叉树的应用Key模型Key/Value的模型 前言 普通二叉树其实意义不大, 如果用二叉树存储数据的话,还不如顺序表,链表这些。 搜索二叉树它的意义…

7.5组合总和②(LC40-M)

算法: 相比于上一题,数组candidates有重复元素,而要求不能有重复的组合,所以相对于39.组合总和 (opens new window)难度提升了不少。 如何去重? 先把candidates排序,让重复的元素都在一起 单层递归时&a…

MyBatis的关联查询!!!(一对一、一对多、多对多)

准备工作: 1.创建Maven工程,还没有配置Maven的和还不会的去看这里啦:maven的下载安装与配置环境变量!!!(全网最详细)-CSDN博客 Account.java : (pojo类) (这里我…

认识Linux背景

1.发展史 Linux从哪里来?它是怎么发展的?在这里简要介绍Linux的发展史 要说Linux,还得从UNIX说起 UNIX发展的历史 1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Mu…

分布式锁常见问题及其解决方案

一、为什么要使用分布式锁? 因为在集群下,相当于多个JVM,就相当于多个锁,集群之间锁是没有关联的,会照成锁失效从而导致线程安全问题 分布式锁可以分别通过MySQL、Redis、Zookeeper来进行实现 二、redis分布式锁的实…

华为发布全闪备份一体机旗舰新品,并宣布备份软件开源

[中国,上海,2023年12月20日]在20日举行的OceanProtect数据保护新品发布会上,华为发布全闪备份一体机旗舰新品,并宣布备份软件开源,以应对智慧金融、自动驾驶等场景对数据备份效率及数据安全方面的新诉求,为…

工业信息采集平台的五大核心优势

关键字:工业信息采集平台,蓝鹏数据采集系统,蓝鹏测控系统, 生产管控系统, 生产数据处理平台,MES系统数据采集, 蓝鹏数据采集平台通过实现和构成其他工业数据信息平台的一级设备进行通讯,从而完成平台之间的无缝对接。这里我们采用的最多的方式是和PLC进行…

神经网络:深度学习基础

1.反向传播算法(BP)的概念及简单推导 反向传播(Backpropagation,BP)算法是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见算法。BP算法对网络中所有权重计算…

Redis取最近10条记录

有时候我们有这样的需求,就是取最近10条数据展示,这些数据不需要存数据库,只用于暂时最近的10条,就没必要在用到Mysql类似的数据库,只需要用redis即可,这样既方便也快! 具体取最近10条的方法&a…

Go 代码检查工具 golangci-lint

一、介绍 golangci-lint 是一个代码检查工具的集合,聚集了多种 Go 代码检查工具,如 golint、go vet 等。 优点: 运行速度快可以集成到 vscode、goland 等开发工具中包含了非常多种代码检查器可以集成到 CI 中这是包含的代码检查器列表&…

DBA-MySql面试问题及答案-上

文章目录 1.什么是数据库?2.如何查看某个操作的语法?3.MySql的存储引擎有哪些?4.常用的2种存储引擎?6.可以针对表设置引擎吗?如何设置?6.选择合适的存储引擎?7.选择合适的数据类型8.char & varchar9.Mysql字符集10.如何选择…

第九周算法题(哈希映射,二分,Floyd算法 (含详细讲解) )

第九周算法题 第一题 题目来源&#xff1a;33. 搜索旋转排序数组 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a;整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 <…

全网最全ChatGPT指令大全prompt

全网最全的ChatGPT大全提示词&#xff0c;大家可以进行下载。 AIGC ChatGPT 职场案例 AI 绘画 与 短视频制作 PowerBI 商业智能 68集 数据库Mysql 8.0 54集 数据库Oracle 21C 142集 Office 2021实战应用 Python 数据分析实战&#xff0c; ETL Informatica 数据仓库案例实战 E…

【JAVA面试题】什么是引用传递?什么是值传递?

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 前言 博客的正文部分可以详细介绍Java中参数传递的机制&#xff0c;强调Java是按值传递的&#xff0c;并解释了基本数据类型和对象引用在这种传…

二级分销的魅力:无限裂变创造十八亿的流水

有这么一个团队&#xff0c;仅靠这一个二级分销&#xff0c;六个月就打造了十八亿的流水。听着是不是很恐怖&#xff1f;十八亿确实是一个很大的数字&#xff0c;那么这个团队是怎么做到的呢&#xff1f;我们接着往下看。 这是一个销售减脂产品的团队。不靠网店&#xff0c;不…