【发布时间】:2012-02-16 10:36:47
【问题描述】:
我正在使用某些软件将某些字符“”、“&”列入用户提交的值的黑名单。
显示提交的结果时不是对值进行HTML编码(将所有提交的结果输出到一个表格中)。
它将值存储在 Sql Server 的 nvarchar 字段中。
你能在这种黑名单方法中找到 XSS 漏洞吗? 看看是否可以让软件供应商对输出进行 HTML 编码。
编辑
我发现表中的值首先作为javascript变量输出,然后添加到页面中。 javascript 中的值是 javascript 编码的。 javascript 编码正在完成它的工作并转义字符串变量中的值。
我正在从这个 javascript 字符串变量呈现的 html 中寻找 xss 漏洞。
失败的想法
鉴于使用了 javascript,因此尝试使用
的 javascript unicode 表示"\u003cscript\u003ealert('hi');\u003/script\u003e"
然而,如上所述,javascript 编码器正在完成它的工作,只是输出为文本。
【问题讨论】:
-
javascript:alert('Hello World!')将通过此验证器。 -
是的,但它没有被执行,值在表格单元格中输出。
-
html 看起来如何?数据是只放在标签之间还是作为 html 属性。响应是否设置了字符编码http头?
-
数据在元素
Data_Goes_Here 内输出,而不是在元素的属性中输出,或者可以通过 onmouseover 执行某些操作。数据作为javascript变量输出,然后从javascript写到表中。