XCTF NaNNaNNaNNaN-Batman

↘锁芯ラ 提交于 2020-04-03 11:45:53

一.按照提示下载附件

  1.打开后发现是一段javascript代码,我们将下载的附件改一下文件名,改为后缀为 .html

  在通过浏览器打开发现是一个输入框。

 

  我们随便输入点什么看看有什么反应,很遗憾,什么提示都没有,我们f12,查看源码发现它最后通过eval()函数将function里的内容去执行

  eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

  语法:eval(string)

  

 

   说明:该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。

  因此请不要为 eval() 函数传递 String 对象来作为参数。

  如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常

 

   2.猜测这里可能是eval将前面的一堆字符串计算了,所以呈现乱码。

  这里我们将js代码里的  eval()函数换成  alert(),将被执行的字符串弹窗显示,就可以避免乱码。

 

   分析弹窗出来的内容,可以知道这个函数就是对输入通过正则表达式进行验证,

  我们构造只要e的规则符合长度为16并且以be0f23开头以e98aa结尾并且需要匹配233ac和c7be9即可.

  唯一满足的也就是  be0f23ac7be98aa,为了方便我们将其输入,再次将alert(),改成eval(),在将其输入获得flag。

 

  这里我们也可以采用控制台进行输入 将eval换成console.log(),得到和弹窗一样的内容,再将其复制到控制台输入,

  提示成功,显示一个输入框,我们再将我们  be0f23ac7be98aa 输入得到flag

  

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!