美文网首页CTFCTF
[WCTF]超简单的js题

[WCTF]超简单的js题

作者: 王一航 | 来源:发表于2016-06-28 20:48 被阅读404次

题目链接
http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=42


分析:
题目的入口是一个php页面,打开;

题目截图
查看源代码如下:

源代码截图
发现在JavaScript代码中定义了两个变量

var p1 = '%66%75%6e%63%74%69%6f%6e%20%63%68%65%63%6b%53%75%62%6d%69%74%28%29%7b%76%61%72%20%61%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%70%61%73%73%77%6f%72%64%22%29%3b%69%66%28%22%75%6e%64%65%66%69%6e%65%64%22%21%3d%74%79%70%65%6f%66%20%61%29%7b%69%66%28%22%30%61%38%36%33%63%36%30';  

var p2 = '%34%34%65%35%36%39%63%33%37%31%38%31%37%33%63%62%35%38%62%35%36%61%62%22%3d%3d%61%2e%76%61%6c%75%65%29%72%65%74%75%72%6e%21%30%3b%61%6c%65%72%74%28%22%45%72%72%6f%72%22%29%3b%61%2e%66%6f%63%75%73%28%29%3b%72%65%74%75%72%6e%21%31%7d%7d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%6c%65%76%65%6c%51%75%65%73%74%22%29%2e%6f%6e%73%75%62%6d%69%74%3d%63%68%65%63%6b%53%75%62%6d%69%74%3b';  

这两个变量的值都是%加上一个二位数组成.
如果细心的同学平常在浏览网页的时候就会发现,比如说我们在百度进行搜索的时候,输入关键字,点击搜索按钮.
浏览器的链接框里面就会出现同样格式的字符串,由此可以推断出这两个变量的值一定是根据某一种格式进行编码,所以想到进行解析。
然后继续分析JavaScript代码部分,在定义完这两个变量以后,执行了这条语句;

eval(unescape(p1) + unescape('%34' + p2));  

这条语句中分别调用了

eval()  
unescape()

这两个函数
百度这两个函数的API,发现:
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
unescape() 函数可对通过 escape() 编码的字符串进行解码。
首先需要对先前定义的两个变量进行解码,然后连接两个字符串,然后作为参数传入eval()函数
所以,我们要找到eval()的入口参数,就必须先得对unescape()函数进行了解
百度一下escape()的API
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。(该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。)
或者我们可以直接百度“URL在线解码器”:

解码(p1):

解码('%34' + p2):

解码后得到一串JavaScript代码:

一眼发现其中有一串MD5:0a863c60444e569c3718173cb58b56ab

尝试去MD5破解的网站去查询,但是是一条收费记录。

又回过头来读代码,发现当input表单的输入字符串为0a863c60444e569c3718173cb58b56ab的时候,返回!0

所以就试着回到页面中,输入这串MD5,提交

直接就得到答案


答案
wctf{webclieNt_c0py}


知识点:

相关文章

  • [WCTF]超简单的js题

    题目链接http://ctf.idf.cn/index.php?g=game&m=article&a=index&...

  • WCTF2018 truth

    TL;DR WCTF2018的一道.NET逆向题,利用了.NET的即时编译(JIT)机制,动态修改了Func3函数...

  • [WCTF]红与黑

    题目链接:http://ctf.idf.cn/index.php?g=game&m=article&a=index...

  • 在Vue中使用echarts

    超简单步骤已完成 安装 npm install echarts -S 2.mian.js引入import * a...

  • 2016-11-11

    夯题,醉生梦死般夯题。 理由很简单,我被小吉同学超了!为了我大海中的威严地位,我要反超…毫不犹豫。 电影《怦然心动...

  • Webpack配置跨域

    配置超简单 打开config/index.js的dev下添加proxyTable 它的意思就是吧所有 /bread...

  • 亲子(212)

    2018年1月3号 相博超妈妈 今天数学测验相博超又没得满分,回来我看卷子错了一道选择题,很简单的一道题,平时...

  • 超简单的JS调用OC方法

    JavaScript语言调用Objective-C语言,并没有现成的API,但是有些方法可以达到相应的效果。...

  • Ts Day1

    官网文档链接 typescript是javascript的超集,所以js能干的是ts都能干。ts简单理解无非就是加...

  • 利用 jQuery 实现飞入效果

    利用 jquery.fly.min.js 实现一个超简单的飞入效果,模拟购物车特效。 HTML 代码: JAV...

网友评论

  • 北斗贰:很棒诶!🐥
  • 废材当爸:代码是随机的,不过,最后那一串应该是md5,我做的就不同,但是,解出来flag也是一样的。我就好奇,输入后执行的难道就是个md5解码还是啥?
  • 废材当爸:js语言
  • Big_bozi:作者很厉害啊
    王一航:@Big_bozi 谢谢夸奖 :blush: ,其实这些题目都很简单...正规的CTF比赛中有超级多厉害的人呢 :relieved:

本文标题:[WCTF]超简单的js题

本文链接:https://www.haomeiwen.com/subject/xqitjttx.html