等级2 - DOM型XSS

通过JavaScript操作DOM来执行XSS攻击

挑战描述

DOM型XSS发生在客户端,通过JavaScript操作DOM来执行恶意代码。与反射型XSS不同,DOM型XSS的payload不会发送到服务器,而是在客户端直接执行。

目标:通过URL参数注入恶意代码,使页面弹出包含"XSS"的警告框。

漏洞代码分析

// JavaScript DOM操作代码 function displayContent() { // 从URL中获取id参数 const urlParams = new URLSearchParams(window.location.search); let id = urlParams.get('id') || ''; // URL解码 id = decodeURIComponent(id); // 直接使用innerHTML输出(存在XSS漏洞) document.getElementById('content').innerHTML = '用户ID: ' + id; } // 页面加载时执行 window.onload = displayContent; // 漏洞分析: // 1. 直接从URL获取参数 // 2. 使用innerHTML输出,允许HTML标签执行 // 3. 没有任何输入验证或输出编码

测试区域

当前URL参数显示:

DOM XSS特点:
  • 完全在客户端执行,不经过服务器
  • 通过JavaScript操作DOM来触发
  • 常见于单页应用(SPA)和前端路由
  • payload通常在URL片段或参数中