/proc文件系统解析

/proc目录

/proc 非常特别,因为它也是一个虚拟文件系统。它有时被称为进程信息伪文件系统。它不包含“真实”文件,而是包含运行时系统信息(例如系统内存、安装的设备、硬件配置等)。因此,它可以被视为内核的控制和信息中心。事实上,相当多的系统实用程序只是调用该目录中的文件。例如,“lsmod”与“cat /proc/modules”相同,而“lspci”是“cat /proc/pci”的同义词。通过更改此目录中的文件,您甚至可以在系统运行时读取/更改内核参数 (sysctl)。

该目录中的文件最显着的特点是,除了 kcore、mtrr 和 self 之外,所有文件的文件大小均为 0。目录列表类似于以下内容:

image-20230731154316666

子文件

/proc 目录中的文件及其说明如下:

文件描述
/proc/buddyinfo每个内存区中的每个 order 有多少块可用,和内存碎片问题有关。
/proc/cmdline启动时传递给 kernel 的参数信息。
/proc/cpuinfoCPU 信息。
/proc/crypto内核可用的加密模块及细节。
/proc/devices已装载的设备(包括字符设备和块设备)。
/proc/diskstats每个逻辑磁盘设备的信息(包括设备编号) 。
/proc/dma已注册使用的 ISA DMA 通道列表。
/proc/execdomainsLinux 内核当前支持的 execution domains。
/proc/fb帧缓冲设备列表,包括数量和控制它的驱动。
/proc/filesystems内核当前支持的文件系统类型。
/proc/interrupts当前系统使用的中断信息。
/proc/iomem每个物理设备当前在系统内存中的映射。
/proc/ioports一个设备的输入输出所使用的注册端口范围。
/proc/kcore代表系统的物理内存,存储为核心文件格式。
/proc/kmsg等待内核输出信息,可以通过 /sbin/klogd 或 /bin/dmesg 来处理。
/proc/loadavg依据过去一段时间内 CPU 和 IO 的状态得出的负载形态,与 uptime 命令有关。
/proc/locks内核锁住的文件列表。
/proc/mdstat多硬盘,RAID 配置信息(md=multiple disks)。
/proc/meminfo内核管理内存的信息。
/proc/misc在杂项设备(设备号为10)上注册的驱动。
/proc/modules所有装载到内核的模块列表。
/proc/mounts系统当前的所有挂载信息。
/proc/mtrr系统使用的 Memory Type Range Registers(MTRRs)。
/proc/partitions磁盘分区中的块分配信息。
/proc/slabinfo系统中所有活动的 slab 缓存信息。
/proc/stat所有的 CPU 活动信息。
/proc/sysrq-trigger该文件是只写的。使用 echo 命令来写这个文件的时候,远程 root 用户可以执行大多数的系统请求关键命令,就好像在本地终端执行一样。要写入这个文件,需要把 /proc/sys/kernel/sysrq 设置为1,开启 SysRq(Magic System Request Key)功能。
/proc/uptime系统自开机以来的运行时间。
/proc/schedstatkernel 调度器的统计信息。
/proc/swaps交换区域的使用情况。
/proc/version当前 Linux 内核版本、发行版号、gcc 版本号、更新时间等信息。
/proc/vmcore内核 panic 时的内存映像。
/proc/vmstat虚拟内存统计信息。
/proc/zoneinfo显示内存空间的统计信息,对分析虚拟内存行为很有用。

子目录

下表是 /proc/<PID> 进程目录常用文件和子目录说明。

目录描述
/proc/PID/cmdline启动当前进程的完整命令,但僵尸进程目录中的此文件不包含任何信息。
/proc/PID/cwd指向当前进程运行目录的一个符号链接。
/proc/PID/environ进程环境变量列表。
/proc/PID/exe指向启动当前进程的可执行文件(完整路径)的符号链接,可以通过它来启动当前进程的一个拷贝。
/proc/PID/fd包含进程相关的所有的文件描述符。
/proc/PID/maps与进程(可执行文件和库)相关的内存映射信息。
/proc/PID/mem指代进程持有的内存,不可读。
/proc/PID/root链接到进程的根目录。
/proc/PID/stat进程状态信息。
/proc/PID/statm进程使用的内存状态信息。
/proc/PID/status进程状态信息,比 stat/statm 更具可读性。
/proc/self链接到当前正在执行的进程。

/proc/self/指向当前调度的pid,即当前正在运行的进程(在当前逻辑CPU上)。其效果是 /proc/self 始终指向请求程序的 pid。进程将真正看到不同的 /proc/self/ 而无法看到彼此的 /proc/self/

image-20230731155342633

但是,当执行 cat /proc/self/status 时,您会看到短暂的 cat 进程的内容

image-20230731155454450

CTF中的运用

题目来源:攻防时间catcat-new

image-20230731155924559

这里有一个目录穿越

image-20230731160209990

能读passwd,尝试读取/flag,但是并不存在

查看环境变量获取启动当前题目进程的完整命令

image-20230731160251403

app.py是flask的特征,后加以利用

详见攻防世界-cat_cat_new(flask_session伪造、/proc/self/文件夹) - 你呀你~ - 博客园 (cnblogs.com)

参考文章

/proc --- /进程 (tldp.org)

Linux的proc文件系统,proc/&pid与/proc/self的学习---CTF应用/proc/self/cmdline迷途羔羊pro的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值