Link2-群友靶机
LINK 靶机 WP
最终拿到的 flag:
user: flag{user-05851bbc17a30c08cebd70bb537a3115}root: flag{root-7ad90e080cbf6381a0930940d0879535}
信息收集
发现开启了三个端口先访问下80
访问首页:
http://192.168.56.141/
页面只有一个标题:
12138
以及一张图片:
12138.jpg
发现图片上有12138的提示,那么重点应该是在该端口了
分析 12138 端口服务
直接连接 12138 端口后,服务返回:
1 | Please enter a path |
这说明它像是一个“输入路径然后读取文件”的自定义服务。
经过测试其必须在/home/user12138目录下那么在该目录下进行信息收集
可以在该目录发现flag
1 | flag{user-05851bbc17a30c08cebd70bb537a3115} |
同时还可以读到一些高价值文件:.bash_history
这里泄露了一个账号密码
1 | william-fN10MaXtaEY5VJWJ65ni |
可以进行ssh连接
本地信息收集
在 william 下做收集,发现几个关键点。
12138 服务进程
1 | ps -ef | grep 12138 |
可见:
可以发现:
/opt/12138是 root 启动的- 12138 文件读取服务是 root 权限运行
这意味着只要绕过它的路径限制,就能以 root 权限读取任意文件。
elf文件分析
把 /opt/12138 拉下来分析后,确认逻辑大致如下:
看不懂扔给ai分析的结果如下:
- 检查输入路径是否以
/home/user12138或/tmp开头 - 禁止路径中出现
.. - 用
lstat()检查“最终路径”是否是符号链接 - 如果不是符号链接,就调用
open()打开并读取
关键漏洞点:
- 它只检查“最终文件”是不是 symlink
- 但不会禁止“路径中的中间目录”是 symlink
这就给了绕过空间。
并且ai给的思路
获取rootflag
获取root下flag的思路:
在 /tmp 下自己先建一个普通目录,再在这个普通目录里放 symlink:
1 | mkdir -p /tmp/w |
这样请求:
1 | /tmp/w/x/etc/passwd |
就能稳定读到:
1 | /etc/passwd |
这证明绕过成立。
原理是:
- 输入路径仍然是以
/tmp开头,满足前缀检查 - 路径里没有
.. - 最终文件
/tmp/w/x/etc/passwd在lstat看起来是普通文件 - 但中间目录
x实际是指向/的 symlink open()会跟随中间目录 symlink,最终打开真正的/etc/passwd
读取 root flag
既然 /tmp/w/x -> / 已经成立,那么 root flag 直接读:
1 | /tmp/w/x/root/root.txt |
成功返回:
1 | flag{root-7ad90e080cbf6381a0930940d0879535} |
之后看到有个cve能够进行提权https://github.com/Vozec/CVE-2026-41651
https://github.com/CipherCloak/CVE-2026-41651/blob/main/cve-2026-41651.py
之后提权即可
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 n0ne!







