日拱一卒--bugku之江湖魔头

长安乱

参考链接:https://blog.csdn.net/qq_2589...
题目链接:http://123.206.31.85:1616/
图片.png
点进去界面如下:
图片.png
根据题目提示应该是想办法学如来神掌,然后讨伐魔头拿到flag。如来神掌要银子买,银子可以点击【赚钱】赚。
点击【赚钱】,5秒钟才赚一百两,万恶的资本家,此路不通。
抓个包看看后端返回:
图片.png
没啥有用的东西,set了一下cookie,有3个js文件,一个alert()。出于严谨改了一下alert()里的数字,结果只是爽给自己看,一百两还是一百两,一文都没有多。又重放了几下报文,发现钱也没有涨,多试了几次觉得问题应该出在cookie上。
看一下那三个js文件,发现script.js里有点东西。
图片.png
图片.png
但是代码看不懂,网上查攻略说是被压缩混淆了,找到一个在线解密的网站:https://tool.lu/js/
解密后的代码如下:

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i].trim();
        if (c.indexOf(name) == 0) return c.substring(name.length, c.length)
    }
    return ""
}
function decode_create(temp) {
    var base = new Base64();
    var result = base.decode(temp);
    var result3 = "";
    for (i = 0; i < result.length; i++) {
        var num = result[i].charCodeAt();
        num = num ^ i;
        num = num - ((i % 10) + 2);
        result3 += String.fromCharCode(num)
    }
    return result3
}
function ertqwe() {
    var temp_name = "user";
    var temp = getCookie(temp_name);
    temp = decodeURIComponent(temp);
    var mingwen = decode_create(temp);
    var ca = mingwen.split(';');
    var key = "";
    for (i = 0; i < ca.length; i++) {
        if (-1 < ca[i].indexOf("flag")) {
            key = ca[i + 1].split(":")[2]
        }
    }
    key = key.replace('"', "").replace('"', "");
    document.write('<img id="attack-1" src="image/1-1.jpg">');
    setTimeout(function() {
        document.getElementById("attack-1").src = "image/1-2.jpg"
    }, 1000);
    setTimeout(function() {
        document.getElementById("attack-1").src = "image/1-3.jpg"
    }, 2000);
    setTimeout(function() {
        document.getElementById("attack-1").src = "image/1-4.jpg"
    }, 3000);
    setTimeout(function() {
        document.getElementById("attack-1").src = "image/6.png"
    }, 4000);
    setTimeout(function() {
        alert("你使用如来神掌打败了蒙老魔,但不知道是真身还是假身,提交试一下吧!flag{" + md5(key) + "}")
    }, 5000)
}

好看多了,看到有两个函数用来解密cookie里的值,先decodeURIComponent一下,再decode_create一下,就出来了,先看一下cookie解密后是啥:
图片.png
这下思路就清晰很多了,就是把银子数修改掉再加密回去,替换掉原有的cookie值,骗过后台,学会如来神掌,干掉魔头,拿到flag。
先进行第一重加密,根据decode_create的代码写出加密代码如下:

var result3 = "";
    for (i = 0; i < a.length; i++) {
        var num =a[i].charCodeAt();
        num = num + ((i % 10) + 2);
        num = num ^ i;
        result3 += String.fromCharCode(num)
    }

解密是先异或再减,加密就是先加再异或,之后变成这样:
图片.png
还需要进行一次加密,这个代码在base64.js中有,但是有一个坑点,如下图:
图片.png
解密的代码如下图:
图片.png
可以看到解密的一行decode代码被注释掉了,因此加密的那一行也不能用,把代码粘出来去掉那一行运行得到:
图片.png
之后再encodeURIComponent一下就得到了cookie值,替换之后就可以购买秘密打boss了。
图片.png
图片.png

阅读 620
9 声望
2 粉丝
0 条评论
9 声望
2 粉丝
文章目录
宣传栏