linux入门教学,linux入门课程
在前言中,本文研究了linux的/prof/self,并就此知识点写了wp。
Linux的/proc/self/learning可以通过/proc/p i d/获取引用进程的信息,比如内存映射、C P U绑定信息等。如果一个进程想要获取该进程的系统信息,可以使用该进程的p i d来interview/p r o c/pid/来获取指定进程的信息,比如内存映射、CPU绑定信息等等。如果一个进程想要获取自己进程的系统信息,可以通过进程的pid访问/proc/pid/来获取指定进程的信息,比如内存映射,CPU绑定信息等等。如果一个进程想要获取这个进程的系统信息,可以通过进程的pid访问/proc/pid/目录。但是这个方法还是需要获取进程的pid,在fork、daemon等情况下pid可能会发生变化。为了更方便的获取这个进程的信息,linux提供了/proc/self/目录,这个目录是唯一的。不同的进程在访问这个目录时得到不同的信息,其内容相当于/proc/this process pid/。一个进程可以访问/proc/self/目录来获取自己的系统信息,而不是每次都获取pid。
/proc目录Linux系统上的/proc目录是一个文件系统,即proc文件系统。与其他常见的文件系统不同,/proc是一个伪文件系统(即虚拟文件系统),它存储了内核当前运行状态的一系列特殊文件。用户可以通过这些文件查看系统硬件和当前运行进程的信息,甚至可以通过改变其中的一些来改变内核的运行状态。基于上面提到的/proc文件系统的特殊性,其中的文件往往被称为虚拟文件,具有一些独特的特性。例如,当使用view命令查看这些文件时,其中一些文件将返回大量信息,但文件本身的大小将显示为0字节。此外,这些特殊文件的时间和日期属性大多通常是当前的系统时间和日期,这与它们会随时被刷新(存储在RAM中)有关。为了方便查看和使用,通常会将这些文件按照相关性分类存放在不同的目录甚至子目录中。比如/proc/SCSI目录存储了当前系统上所有SCSI设备的相关信息,而/proc/N目录存储了系统当前正在运行的进程的相关信息,其中N是正在运行的进程(可以想象,一个进程结束后,相关目录就会消失)。大多数虚拟文件都可以通过使用文件查看命令(如cat)或多或少地查看。有些文件可以一目了然地表达其内容,但有些文件可读性不强。但是,这些可读性很差的文件在使用apm、free、lspci或top等命令查看时可以很好地执行。Ls -al /proc直接在/proc等下列出进程信息。打开进程ls -al /proc/进程号[root @ z3e yond ~]# ls-al/proc/2674 total 0dr-xr-xr-x 2 root root 0 Feb 8 17:15 attr-r-1 root root 0 Feb 8 17:14 auxv-r-r-r-1 root root 0 Feb 8 17:09 cmdline-rw-r-r-1 r root 0 Feb 8 17:14 core dump _ filter-r-r-r-1 root saslauthd-r-1 root root 0 Feb 8 17:14 environlrwxrwxrwx 1 root root 0 Feb 8 17:09 exe-/usr/sbin/saslauthddr-x-2 root root 0 Feb 8 17:15 FD-r-1 root root 0 Feb 8 17:14限制-rw-r-r-1 root root 0 Feb 8 17:14 log in uid-r-r-r-1 root 0 Feb 8 17:14 maps-rw-1 root root 0 Feb 8 17:14 mem-r-r-r-1 root root 0 Feb 8 17:14 mounts-r-1 root 0 Feb 8 17:17 root 0 Feb 8 17:14 oom _ adj-r-r-r-1 root root 0 Feb 8 17:14 oom _ scorelrwxrwxrwx 1 root root 0 Feb 8 17:14 root-/-r-r-r-1 root root root 0 Feb 8 17:14 schedstat-r-1 root root 0 Feb 8 17:14 smaps-r-r-r-1 root root 0 Feb 8 17:09 stat-r-r-r-1 root 0 Feb 8 17:14 stattm-r-r-r-1 root 0 Feb 8 17:10 status dr-xr-xr-x3 root 0 Feb 8 17:15 task-r-r-r-1 root 0 Feb 8 17:17
Cmdline文件存储启动
当前进程的完整命令
,但是僵尸进程目录中的这个文件不包含任何信息。您可以通过查看cmdline目录获得启动指定进程的完整命令:cat/proc/1035/cmdline[root @ z3 eyond ~]# more/proc/2674/cmdline/usr/sbin/saslauthd 2 . CWD
Cwd文件是一个符号链接,指向运行
目录
的当前进程。您可以通过查看cwd文件获得目标指定进程环境
的运行目录
。ls-al/proc/1090/CWD 3.exe
Exe是启动当前进程的可执行文件(完整路径)的符号链接。我们可以通过exe文件得到指定进程的可执行文件的完整路径。
ls -al /proc/1090/exe
Environ文件存储当前进程的
环境变量
列表,用空字符分隔。变量用大写字母表示,它们的值用小写字母表示。可以通过查看environ目录
获取指定进程
的环境变量
信息:cat /proc/2889/environ 5.fd
Fd是包含当前进程打开的每个文件的文件描述符的目录,差不多就是路径。这些文件描述符是实际文件的符号连接,也就是说,这个进程打开的每个文件都会显示在这里。这样我们就可以得到fd目录下文件的进程,从而打开每个文件的路径和内容。
查看由指定进程打开的文件的内容。那个数字就是那个数字。
Ls -al /proc/1070/fd/4这个fd很重要,因为在Linux系统中,如果一个程序用open()打开了一个文件,但是最后没有关闭,那么即使从外部删除了这个文件(比如:os.remove(SECRET_FILE)),这个文件仍然会存在于/proc这个进程的pid目录下的fd文件描述符目录中。
我们稍后需要这个东西来获取被删除的文件。
6 .自我
在linux中,为了更方便的获取这个进程的信息,Linux提供了/proc/self/目录,这个目录是唯一的。不同的进程在访问这个目录时得到不同的信息,其内容相当于/proc/this process pid/。一个进程可以访问/proc/self/目录来获取自己的系统信息,而不是每次都获取pid。
所以上面的命令可以直接把进程号改成数字。
1.获取当前启动进程的完成命令:cat /proc/self/cmdline2。获取目标当前进程的运行目录以及目录下的文件:ls-al/proc/self/CWD ls/proc/self/CWD 3。获取当前进程可执行文件的完整路径:ls-al/proc/self/3。EXE:获取当前进程可执行文件的完整路径:ls -al /proc/self/exe4。获取当前环境变量cat /proc/self/environ5。获取当前进程打开的文件内容。cat /proc/self/fd/{id}也可以是:cat/proc/*/fd/*-*,而不是任何数字和字母。因为如果cat读取/proc/self/cmdline/,就获得了cat进程的信息。所以我们要通过题目的当前进程读取文件(比如文件包含漏洞,SSTI,文件:本地读取,…/…/目录遍历,SSRF)来读取/proc/self/cmdline。
以上是几个重要的文件。有关更多文档描述,请参见此处。
CTF标题【网鼎杯2020白虎团】Picdown-Proc文件的使用-python反弹壳
[VN2020打开]签入
参考文章https://blog.csdn.net/Zero_Adam/article/details/114853022