我正在对一个网站进行渗透测试,试图通过输入参数之一执行存储的xss有效负载。应用程序在客户端具有特殊情况验证,因此我在Burp中拦截了该请求,并在输入参数中添加了%22(这是双引号“ )。
现在的问题是,当页面用我注入的双引号反映此输入参数时,它看起来不像常规的双引号(“)。而是看起来像是斜体。这就是它的方式现在在浏览器中显示(“),但我希望它看起来像(”)
这可能是怎么回事?为什么我的双引号在向后反射时在浏览器中看起来像这样? 任何帮助表示赞赏。
谢谢
答案 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输出(根据需要进行匿名化)可能会有所帮助。