美文网首页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}


    知识点:

    相关文章

      网友评论

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

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

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