2026-01-16 22:09:35
针对第一题XSS实例的绕过方法为在URL的hash部分注入闭合语句并执行任意JavaScript代码,具体构造的payload为#');alert('1,完整测试链接为
题目提供的代码逻辑如下:
<script type="text/javascript">var x=location.hash; // 获取URL的hash部分(#之后的内容)console.log("aa('"+x+"')"); // 打印拼接后的字符串function aa(x){}; // 定义空函数aasetTimeout("aa('"+x+"')",100); // 100毫秒后执行拼接的字符串</script>原始拼接逻辑:假设location.hash为空,setTimeout执行的代码为:
aa('') // 调用空函数aa,无实际效果注入攻击:若location.hash为#');alert('1,拼接后的代码变为:
aa('');alert('1') // 闭合原字符串后插入新代码aa(''):调用空函数,无害。
alert('1'):执行弹窗,验证XSS成功。
构造Payload:
需闭合aa('和'),并在中间插入恶意代码。
最终hash部分为:#');alert('1。
完整测试链接:
访问后,页面会执行alert(1),弹出对话框。
代码执行流程:
浏览器解析URL,location.hash获取值为#');alert('1。
代码拼接为aa('');alert('1'),并作为字符串传入setTimeout。
100毫秒后,JavaScript引擎执行该字符串,触发弹窗。
若目标环境对单引号或括号过滤,可尝试以下替代方案:
双引号绕过:
拼接后代码:
aa("");alert(1);//') // 注释掉后续内容无引号绕过(利用javascript:伪协议):
需结合其他漏洞(如<a>标签的href属性)才能生效,本题不适用。
通过上述方法,可成功绕过第一题的XSS防护,执行任意JavaScript代码。后续题目若涉及其他过滤机制(如HTML实体编码、WAF规则等),需进一步调整Payload结构。