这看起来像是在尝试几种不同的注入,所以我会尝试一次分解它们:
第一次注射
';alert(String.fromCharCode(88,83,83))//
此注入尝试终止 JavaScript 字符串文字(使用'
),然后终止该语句(用;
)并拨打电话alert(String.fromCharCode(88,83,83))
这将导致弹出包含“XSS”的框。下列//
是尝试“注释掉”语句的其余部分,以便不会发生语法错误并且脚本将执行。
第二次注射
";alert(String.fromCharCode(88,83,83))//
与第一次注射类似,但它使用"
试图终止 JavaScript 字符串文字。
第三次注射
--></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
这试图做以下事情:
- 终止 HTML(或 XML)注释(使用
-->
)
- Terminate an existing
<SCRIPT>
tag using </SCRIPT>
- 这样做是为了防止注入的脚本导致语法错误,从而阻止注入的脚本执行。
- 终止 HTML 属性和标签,使用
">
- 终止 HTML 属性和标签,使用
'>
- 使用注入 JavaScript
<SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
第四次注射
'';!--"<XSS>=&{()}
这是一个常用字符串,用于测试用户输入上使用的过滤器和/或编码(如果有)。通常,注入后的页面源将包含<XSS
or <XSS
。如果找到第二个,则应用程序很可能不会过滤用户输入(因为它允许添加任意标签),并且很可能容易受到 XSS 攻击。
回答您更直接的问题:
为什么会重复“alert(String.fromCharCode(88,83,83))”
这是一个常见的“概念验证”功能,它将导致出现一个包含“XSS”的弹出框。如果发生这种情况,则执行注入的 JavaScript。
为什么第一个字符串中重复出现 'alert(String.fromCharCode(88,83,83))' 以及为什么 //'; //"; //-->
这些用于防止语法错误,这可能导致注入的 JavaScript 无法执行。