由于双引号不同,XSS有效负载未执行

时间:2018-10-02 00:05:55

标签: javascript xss penetration-testing

我正在对一个网站进行渗透测试,试图通过输入参数之一执行存储的xss有效负载。应用程序在客户端具有特殊情况验证,因此我在Burp中拦截了该请求,并在输入参数中添加了%22(这是双引号)。

现在的问题是,当页面用我注入的双引号反映此输入参数时,它看起来不像常规的双引号(“)。而是看起来像是斜体。这就是它的方式现在在浏览器中显示(“),但我希望它看起来像(”)

这可能是怎么回事?为什么我的双引号在向后反射时在浏览器中看起来像这样? 任何帮助表示赞赏。

谢谢

1 个答案:

答案 0 :(得分:3)

  

这可能是怎么回事?

好吧,没有看到源代码,我们所能做的就是推测。它可能是开发人员对输出服务器端进行编码的方式。就像我们经常将"转换为"来防止XSS一样,如果在右边有空格,并且{{1} },如果左边有一个空格可以创建“花式”引号。

我会尝试这样的有效载荷:

  • ”-“-更改为结束报价了吗?
  • test%22%20test-test" test-更改为公开报价了吗?
  • test%20%22test-test "test-中间引号发生了什么?行为有何不同?
  • %22te%22st%22-"te"st"-使用换行符有什么改变吗?
  • test%22%0atest-test"\ntest"-反斜杠有什么改变吗?
  • test%5c%22test-test\"test"-哪些报价被编码?如果我使用更多/更少的引号会发生什么。奇偶。等等

这取决于对这些问题的答案,但是如果所有引号都已编码(无论它们是否成为花哨的unicode引号或成为%22%22%22%22%22%22%22%22),那么如果满足以下条件,则可能根本无法获得XSS:您被困在字符串中。

将来,包括HTML输出(根据需要进行匿名化)可能会有所帮助。