• 如果您想对本站表示支持,请随手点击一下广告即可~
  • 本站致力于提供原创、优秀的技术文章~
  • 有任何疑问或建议 均可以在站点右侧栏处 通过各种方式联系站长哦~
  • CTF – Prompt(1)解题报告 [Level 2 – frowny face]

    渗透测试 EXP 271阅读 0评论

    指引

    题目

    解题报告

    正则把输入内容中所有 =( 过滤了。

    = 被过滤了不是什么大问题,XSS 直接放在 <script> 标签一样可以执行,关键是 ( 被过略了。

    此处可以利用 <svg> 标签【会对标签中的内容优先做实体编码解析】的原理进行绕过。

    在网页编码中,以 &#ASCII; 称为实体编码,其中 ASCII 可以用十进制或十六进制表示。如 ( 的 ASCII 编码为 40 (或十六进制 0x28) ,那么 &#40;&#x28; 就是 ( 的实体编码。

    因此这题可构造这样的 payload 实现绕过:<svg><script>prompt&#40;1)</script>

    它的工作原理为:

    • 在 HTML 中,原本 <script> 标签属于 Raw text elements ,其内部文本遵循着不转义的规则。
    • 但是 <svg> 标签属于 Foreign Elements ,即使在HTML语境下也不会受到 HTML 规则的影响,而是遵循 <svg> 自身的解析规则。
    • <svg> 直接继承自 XML,一般情况下,它的解析规则为:除非被 CDATA 包围,否则实体编码都会被转义。


    这题也可以利用 javascript 的 eval 函数实现绕过,payload 如下:


    转载请注明:EXP 技术分享博客 » CTF – Prompt(1)解题报告 [Level 2 – frowny face]

    喜欢 (0) 分享 (0)
    发表我的评论
    取消评论

    表情

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址