zoukankan      html  css  js  c++  java
  • IDF-CTF-不难不易的js加密 writeup

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

    就是这里 → http://ctf.idf.cn/game/web/28

    思路:
    点开链接后弹出一个窗口,要求输入flag,按F12可以看到窗口是用一段加密的js代码实现的,将这段js代码复制到站长工具中进行解密,得到解密后的js代码,然后将其中的Unicode码及Ascii码转换为相应的字符,结果如下:

    <script type = "text/javascript" >
    var a = prompt("输入你的flag吧,少年!", "");
    var b = "f3373e36c677750779f5d04ff7885b3e";
    var c = /.+_.+_.+/gi;
    var d = 0x0;
    var e = a.substr(0x8, 0x5);
    if ($.md5(e) == b.replace(/7/ig, ++d).replace(/8/ig, d * 0x2)) {
        var f = a.substr(0x0 / d, 0x7);
        if (f.substr(0x5, 0x2) == "js" && $.md5(f.substr(0x0 / d, d + 0x3)) == "d0154d5048b5a5eb10ef1646400719f1") {
            r = a.substr(0xd);
            if (r.charCodeAt(d) - 0x19 == r.charCodeAt(++d) - 0x19 && r.charCodeAt(--d) - 0x19 == r.charCodeAt(--d)) {
                var g = String.fromCharCode(0x4f);
                g = g.toLowerCase() + g.toLowerCase();
                if (r.substr((++d) * 0x3, 0x6) == g.concat("easy") && c.test(a)) {
                    d = String(0x1) + String(a.length)
                }
            }
        }
    };
    if (a.substr(0x4, 0x1) != String.fromCharCode(d) || a.substr(0x4, 0x1) == "z") {
        alert("额,再去想想。。")
    } else {
        alert("恭喜恭喜!")
    }
    < /script>
    

    分析代码,发现变量 a 就是我们要求的 flag。
    经过 b.replace(/7/ig, ++d).replace(/8/ig, d * 0x2) 后变量 b 变为 f3313e36c611150119f5d04ff1225b3e,经 md5 解密后得到 jiami,这就是变量 e 的值,而 e = a.substr(0x8, 0x5)。
    此时变量 d=0x01,d0154d5048b5a5eb10ef1646400719f1 经md5解密得到 wctf ,即 f.substr(0x0, 0x4)=‘wctf’,又 f.substr(0x5, 0x2) == “js”,且 f = a.substr(0x0, 0x7),这样又可以确定变量 a 的一部分。
    此时变量 d=0x1,继续计算,可得 r = a.substr(13),r.charCodeAt(1) == r.charCodeAt(2),r.charCodeAt(1) - 0x19 == r.charCodeAt(0),得到了三个位置的代数关系。
    此时变量 d=0x0,g=’oo’,r.substr(3, 6) == ‘ooeasy’,由 c.test(a) 为“真”结合 flag 一般为“wctf{…}”的格式可初步猜测变量 a=’wctf{js_jiami_xxooeasy}’。
    计算 d=123,验证最后一个 if 语句可得猜测正确,条件转向“恭喜恭喜”。

  • 相关阅读:
    [BZOJ 2144]跳跳棋
    [NOIp 2015]信息传递
    [JLOI 2014]松鼠的新家
    [Luogu 2062]分队问题
    [Luogu 2090]数字对
    [NOIp 2015]运输计划
    [USACO 03FEB]Farm Tour
    [TJOI 2010]中位数
    IO密集型 计算密集型
    python 编码
  • 原文地址:https://www.cnblogs.com/renzongxian/p/4586411.html
Copyright © 2011-2022 走看看