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

    渗透测试 EXP 61阅读 0评论

    指引

    题目

    解题报告

    这题与 【Level A – (╯°□°)╯︵ ┻━┻】 十分相似。

    区别在于 replaceprompt 和 单引号 ' 的顺序反转了。

    但是无论顺序如何,过滤后可以使用的字符都只剩下 a-zA-Z0-9.()!~*

    因此这题直接使用 【Level A – (╯°□°)╯︵ ┻━┻】 的 payload 就可以 pass :


    但其实这题还有另一种更巧妙的解法。

    在 JS 中存在一个函数 parseInt(str, radix)

    默认情况下,radix = 10,即它可以把十进制的数字字符串转换成十进制数。

    但是通过调整进制数 radix ,它可以把其他进制的字符串转换成十进制数。

    而当 radix = 36 时。它可以把只包含 0-9a-z (大小写不敏感)的字符串转换成十进制数。

    于是我们可以把 prompt 字符串转换成十进制数:parseInt("prompt", 36) ,得到 1558153217

    而要将十进制数字还原成字符串,则可以使用另一个函数 toString(radix) (默认情况下 radix = 10 )。

    即可以使用此方法 (1558153217).toString(36) 还原得到 prompt 字符串:

    于是最开始的 payload 就开始简化成这样:

    注:【Level A – (╯°□°)╯︵ ┻━┻】 同样可以使用这个 payload 完成挑战。


    转载请注明:EXP 技术分享博客 » CTF – Prompt(1)解题报告 [Level C – ノ┬─┬ノ ︵ ( \o°o)\]

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

    表情

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

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