XCTF NaNNaNNaNNaN-Batman
一.按照提示下载附件
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