最近我发现了关于XSS和Web应用程序安全性的本教程 - > https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#XSS_Locator
一开始有一些字符串要注入,以便测试一个站点是否容易受到xss的攻击。这些字符串是:
';alert(String.fromCharCode(88,83,83))//';alert(String.fromCharCode(88,83,83))//";
alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//--
></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
和
'';!--"<XSS>=&{()}
我知道XSS的基本概念,但在这里我无法理解为什么在第一个字符串中重复'alert(String.fromCharCode(88,83,83))'以及为什么这些 // '; //“; // - &gt; 需要注释(当他们在搜索xss错误时以这种方式使用时,它们是否意味着什么特别的?)。 在第二个字符串中,&amp; {()}序列的目的是什么?
有人可以用具体示例来解释这两个字符串应该如何工作以检索Web应用程序中的xss错误?在我链接的网站上的原因没有给出解释...
答案 0 :(得分:16)
这看起来好像正在尝试几次不同的注射,所以我会尝试将它们分解为一次:
';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>
这会尝试执行以下操作:
-->
)<SCRIPT>
终止现有的</SCRIPT>
代码
">
'>
<SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
'';!--"<XSS>=&{()}
这是一个常用字符串,用于测试用户输入上使用的过滤器和/或编码(如果有)。通常,此注入后页面的来源将包含<XSS
或<XSS
。如果找到第二个,应用程序很可能不会过滤用户输入(因为它允许添加任意标记)并且可能容易受到XSS的攻击。</ p>
回答更直接的问题:
为什么重复'alert(String.fromCharCode(88,83,83))'
这是一个常见的“概念证明”功能,它会导致弹出框显示为包含“XSS”。如果发生这种情况,则执行注入的JavaScript。
为什么在第一个字符串中重复'alert(String.fromCharCode(88,83,83))'以及为什么//'; //“; // - &gt;
这些用于防止语法错误,这可能导致注入的JavaScript无法执行。