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 -
flags文件夹中隐藏文本文件的内容是什么?
THM
以上就是全部内容!感谢阅读,下次再见!希望这份技术报告对您有所帮助。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码
公众号二维码