Featured image of post XSS-1

XSS-1

XSS-1

XSS THM 做题记录

Level One:

看到一个表单,要您输入的姓名,输入姓名后,该表单将在下面的一行中显示,例如:

如果查看 Page Source,将看到姓名反映在代码中:

我们将尝试输入以下 JavaScript Payload,而不是输入姓名: <script>alert('THM');</script>

现在,当单击输入按钮时,将收到一个带有字符串 THM 的警报弹出窗口,页面源代码将如下所示:

Level Two:

与上一个级别一样,系统将再次要求您输入的姓名。这一次,当单击 enter 时,姓名将反映在 input 标签中:

查看页面源,可以看到姓名反映在 input 标签的 value 属性中:

如果要尝试前面的 JavaScript 有效负载,它将不起作用,因为无法从 input 标签内部运行它。相反,我们需要先转义 input 标签,以便 payload 可以正常运行。可以使用以下有效负载执行此作:

"><script>alert('THM');</script>

有效负载的重要部分是“>”,它关闭 value 参数,然后关闭 input 标记。

现在,这会正确关闭 input 标记并允许 JavaScript 有效负载运行:

Level Three:

看到另一个表单,询问名字,与上一级一样,名字会反映在 HTML 标签中,这次是 textarea 标签。

我们必须使用以下有效负载,以略微不同的方式转义 textarea 标签和输入 1(在 Level Two 中):

</textarea><script>alert('THM');</script>

上述有效负载的重要部分是 </textarea>,它会导致 textarea 元素关闭,以便脚本运行。

Level Four:

在表单中输入姓名,会在页面上看到它。此级别看起来类似于 1 级,但在检查页面源代码时,会看到名字反映在一些 JavaScript 代码中。

必须转义现有的 JavaScript 命令,以便能够运行代码;可以使用以下有效负载 ';alert('THM');// 从下面的屏幕截图中可以看到,它将执行代码。' 关闭指定名称的字段,然后 ;表示当前命令的结束,末尾的 则``使它后面的任何内容成为注释,而不是可执行代码。

Level Five:

现在,此级别看起来与级别 1 相同,并且名字也会反映在同一个位置。但是,如果尝试有效负载 <script>alert('THM');</script> ,它将不起作用。当查看页面源代码时,将了解原因。

script 会从有效负载中删除,这是因为有一个过滤器可以去除任何具有潜在危险的单词。

当一个单词从字符串中删除时,你可以尝试一个有用的技巧。

尝试输入有效负载 <sscriptcript>alert('THM');</sscriptcript> 并单击输入按钮,将看到一个带有字符串 THM 的警报弹出窗口。

Level Six:

与第二级类似,我们必须从 input 标签的 value 属性中转义,我们可以尝试 "><script>alert('THM');</script> ,但这似乎不起作用。让我们检查一下页面源代码,看看为什么这不起作用。

可以看到 < 和 > 字符从我们的 payload 中被过滤掉,从而阻止我们转义 IMG 标签。为了绕过过滤器,我们可以利用 IMG 标签的其他属性,比如 onload 事件。onload 事件将在 src 属性中指定的图像加载到网页后执行您选择的代码。

让我们更改 payload 以反映这一点 /images/cat.jpg" onload="alert('THM'); ,然后查看页面源,您将看到这将如何工作。

Polyglots:

XSS 多语言是一串文本,可以一站式转义属性、标签和绕过过滤器。可以在刚刚完成的所有 6 个级别上使用以下多语言,并且它会成功执行代码。

1
jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */onerror=alert('THM') )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert('THM')//>\x3e
使用 Hugo 构建
主题 StackJimmy 设计