不论是现实生活中的渗透测试,还是 CTF 竞赛中的赛题,都经常会出现
/proc
这个目录,利用该目录中的一些子目录或者文件不仅可以获取有用的环境变量信息
甚至可以直接Getshell
操作系统中的
/proc
是一个位于内存中的伪文件系统(或者叫做虚拟文件系统)。该目录下保存的不是真正的文件和目录,而是一些"运行时"的信息,例如系统内存、磁盘IO、设备挂载信息和硬件配置信息等。proc
目录是一个控制中心,用户可以通过更改其中某些文件来改变内核的运行状态,proc
目录也是内核提供给一个的查询中心,可以通过这些文件查看有关系统硬件及当前正在运行进程的信息。在简单一点来讲,
/proc
目录就是保存在系统中的信息,其包含许多以数字命名的子目录,这些数字代表着当前系统正在运行进程的进程号,里面包含对应进程相关的多个信息文件
一般来说,在
/proc
目录下会存在以下的文件和目录
高级电源管理(APM)版本信息及电池相关状态信息,通常由
apm
命令使用
用于诊断内存碎片问题的相关信息文件;
在启动时传递至内核的相关参数信息,这些信息通常由
lilo
或grub
等启动管理工具进行传递
处理器的相关信息的文件
系统上已安装的内核使用的密码算法及每个算法的详细信息列表
> 这是一个子目录,包含了当前进程打开的每一个文件,每一个条目都是一个文件描述符,这些文件描述符是指向实际文件的一个符号链接,即每个通过这个进程打开的文件都会显示在这里,可以通过`fd`目录里的文件获得指定进程打开的每个文件的路径以及文件内容 > `fd`的另一个用途在于:在`linux`系统中,当一个程序用`open()`打开了一个文件但最终没有关闭该文件,即使从外部删除这个文件,但是在`/proc`这个进程的`pid`目录下的`fd`文件描述符目录下还是会有这个文件的文件描述符,通过这个文件描述符可以得到被删除文件的内容 [+] 查看指定进程打开的某个文件的路径 [+] 查看指定进程打开的某个文件的内容
赛题中往往需要的都是当前进程中的有用信息,而在上述的操作中基本都是目标环境中指定的进程信息,这时可以通过
/proc/self
来获取当前进程的信息,相较于/proc/$pid
,/proc/self
不仅能够更方便的获取本进程的信息,还可以避免在fork
和daemon
等情况下pid
发生变化,感兴趣的话可以看看[+] 获取当前启动进程的完整命令 [+] 获取目标当前进程环境的运行目录与目录里的文件 [+] 获得当前进程的可执行文件的完整路径 [+] 获取当前进程的环境变量信息 [+] 获取当前进程打开的文件内容
tip:当找不到网站路径的时候可以利用
/proc/self/cwd目录来读取apache
进程的php
文件源码
打开题目界面只有一个登录框,随便输入点东西后发现
url
的形式可能存在任意文件读取,尝试后成功下载/etc/passwd
成功拿到当前文件的名字,使用
/proc/self/cwd
来获取文件内容观察源代码后发现关键点:
os.remove(SECRET_FILE)
,这里导致SECRET_FILE
文件被删除了,结合上文分析可以知道,fd
可以用来读取被删除的文件,所以只需要爆破id
值就可以成功读取到被删除文件的内容,这里爆破出来的id=3
后面就是常规的步骤了,利用拿到的
SECRET_FILE
来反弹 shell 即可
针对嵌入式系统的低功耗要求,
提出高效的电源管理方案。
源管理技术的基础上,增加启动加载程序对电源管理的支持,修改
处理器和系统外设进行电源管理,建立用户空间电源管理守护进
当系统处于空闲状态时,
种典型的系统工作频率下,
该电源管理软件系统可将系统功耗降低至未进行电源
关健词:高级电源管理;内存休眠;低功耗设计;
嵌入式系统大多是功耗敏感的,
尤其是便携式手持设备,
高和服务功能的多样化,
低功耗设计成为设计的主要目标之一。