前言

Exploit-Exercise是一个Linux平台下漏洞挖掘、分析的练习平台。下载地址

官方提供了个很多虚拟机、文档、挑战题目,用于学习各种计算机安全问题,如权限提升、漏洞分析、Exploit开发、调试、逆向工程和通用的网络安全问题。

Level 00——寻找特权程序

简介:

这一关需要你找到一个以“flag00”账户运行的“设置用户 ID”程序。你也可以通过仔细检查/目录下的顶层目录中是否存在可疑目录来找到它。

Solution:

根据题目描述,本关需要在系统中搜索一个设置了SUID的程序,这个程序将是以flag00身份运行的。

SUID(Set User ID)是 Linux 和 Unix 系统中一种特殊的文件权限机制,常用于可执行文件。它允许普通用户在运行该程序时临时获得该程序文件所有者的权限,通常是 root 权限。

要完成本关,需要掌握find命令的用法。find命令的格式如下:

find [path...] [expression]

expression可以跟选项。根据题目要求,我们要查找一个所属于flag00账号的可执行程序。find有一个选项叫-uid,后面跟用户的uid值。每个Linux账号都对应一个uid,且不重复。账户的UID可以用命令id查看:

image-20250601181616755

得到flag00用户的UID为999,接着从根目录”/“开始搜素这个神秘的程序:

image-20250601182021026

部分 含义
find / 从根目录 / 开始递归查找
-uid 999 查找属主用户 ID 是 999 的文件
2>/dev/null 标准错误输出(stderr)重定向/dev/null,即隐藏错误信息,比如“权限不够”、“没有访问权限”等

由于当前用户是level00,在进一些没有权限进入的目录进行搜索时,是会出错的,所以用2>/dev/null将错误输出到/dev/null这个空白设备里。Linux标准输入、标准输出、标准错误输出分别对应0、1和2。

搜索结果中,/home/bin/…/flag00/比较特殊,应该是我们要的程序:

image-20250601190649651

按照提示,我们已经拥有了flag00的权限,执行getflag:

image-20250601190741287