Injectics 漏洞挖掘实战:从 SQL 注入到 SSTI 攻击完整解析
Injectics writeup — TryHackMe
0xH1SFollow
4 分钟阅读 · 2025 年 9 月 6 日
在本篇技术报告中,我将详细解析 TryHackMe 平台上 Injectics 靶机的解决过程。该挑战展示了 SQL 查询和模板引擎(Twig)中不安全输入处理的危害。
侦察阶段
我首先使用 Nmap 进行全端口扫描,使用-p-参数扫描所有 65,535 个端口,-sS参数执行隐蔽的 SYN 扫描,-T4参数提高扫描速度。
(nmap)
扫描结果显示 20 和 80 端口处于开放状态。
枚举阶段
接下来,我使用 Gobuster 枚举 Web 服务器上的隐藏文件和目录,在扫描中使用-x参数并指定 js、json、php 扩展名来显示相应文件。
(gobuster)
这发现了三个有趣的文件:
login.php→ 登录功能页面composer.json→ 显示网站使用 Twig 2.14 版本,该版本已知存在 SSTI(服务器端模板注入)漏洞phpmyadmin→ 表明服务器后端使用 MySQL
(composer.json)
访问 80 端口的 Web 应用,我发现一个显示各国运动员奖牌数的页面。检查源代码后发现指向名为mail.log文件的注释。
(mail.log)
打开该文件后,我了解到如果 users 表被删除或损坏,系统会自动重新生成两个默认凭证,这些凭证也会记录在此文件中。这为我们提供了明确的攻击路径:删除表以强制凭证重新生成。
(log)
漏洞利用阶段
随后我测试了login.php功能的 SQL 注入漏洞。
在用户名字段提交1触发了关于无效字符的错误。
(invalid)
深入挖掘后,我发现了一个隐藏脚本。
该脚本列出了被阻止的关键字,如 OR、AND 等。
(invalid)
为了绕过此过滤器,我通过 BurpSuite 发送了编码后的 payload:
1%27%20||%201=1%20--+
相当于:1' OR 1=1 --
(payload)
这成功绕过了身份验证,我以 dev 用户身份获得了访问权限。
(dashboard)
接下来,我通过在所有输入框中输入21*21来探索奖牌编辑功能。
(21*21)
应用程序返回了 441,确认输入正在由 Twig 模板引擎进行评估。
(441)
由于存在 SSTI 漏洞,我尝试利用它。我的目标是删除 users 表,强制应用程序使用默认凭证重新创建它。我使用了:
21; drop table users --
(drop table)
这触发了系统重新创建表的重新加载过程。
(drop)
等待约 2 分钟后,我使用在mails.log中找到的凭证登录,成功以 admin 身份验证并获取了第一个 flag。
(admin)
权限提升
以 admin 身份登录后,出现了一个新的 Profile 选项卡。我开始测试所有输入框。
(twig)
这显示 FirstName 字段存在 SSTI 漏洞,并且这次不仅接受数字还接受字符串。
(49)
此时,我将攻击升级为远程代码执行(RCE)。使用以下 Twig payload:
{{['ls ./flags',""]|sort('passthru')}}
(ls)
为了获取最终 flag,我执行了:
{{['cat ./flags/5d8af1dc14503c7e4bdc8e51a3469f48.txt',""]|sort('passthru')}}
(update)
这成功显示了最后一个 flag,完成了该靶机。
(final flag)
所有问题的答案如下:
登录 admin 面板后的 flag 值是什么?THM{INJECTICS_ADMIN_PANEL_007}
flags 文件夹中隐藏文本文件的内容是什么?THM{5735172b6c147f4dd649872f73e0fdea}
以上就是全部内容!感谢阅读,下次再见!希望这份技术报告对您有所帮助。更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码
公众号二维码







评论