美文网首页
BugkuCTF 魔头

BugkuCTF 魔头

作者: Visianlee | 来源:发表于2019-06-13 23:26 被阅读0次

    打开后是一个类似于游戏的界面,通关需要打败一个魔头,界面大概功能是这样:

    打败魔头需要学会如来神掌
    如来神掌要所有属性都满后才能画100000两学会
    练功可以提升一点属性,需要页面延迟5秒
    赚钱每次100两,需要页面延迟5秒
    可各花费10000两来加满每个属性(内功、外功等)
    因此我们肯定是要想办法修改自己的金钱数目了,一开始没有头绪,想写个js脚本来自动赚钱。。

    但看一下如果弄完也要两个小时左右,而且每次赚钱后的js弹窗无法处理,那么正解肯定不是这样

    我们查看页面源代码发现引用的有js的脚本,看一下script.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是被加密的

    var temp_name = "user";
    var temp = getCookie(temp_name);
    temp = decodeURIComponent(temp);
    var mingwen = decode_create(temp);
    

    那么我们可以到浏览器控制台中执行

    decode_create(decodeURIComponent(getCookie("user")));
    

    得到明文:

    O:5:”human”:10:{s:8:”xueliang”;i:576;s:5:”neili”;i:652;s:5:”lidao”;i:77;s:6:”dingli”;i:66;s:7:”waigong”;i:0;s:7:”neigong”;i:0;s:7:”jingyan”;i:0;s:6:”yelian”;i:0;s:5:”money”;i:0;s:4:”flag”;s:1:”0”;}
    

    我们看到cookie中是包含各种属性值和money的值的,因此我们可以把修改过money的cookie再加密回去,然后提交就可以了

    我一开始写的脚本是这样的,但是提交过去始终不成功

    import base64
    import urllib.parse
    
    
    data = 'O:5:"human":10:{s:8:"xueliang";i:576;s:5:"neili";i:652;s:5:"lidao";i:77;s:6:"dingli";i:66;s:7:"waigong";i:0;s:7:"neigong";i:0;s:7:"jingyan";i:0;s:6:"yelian";i:0;s:5:"money";i:2000000;s:4:"flag";s:1:"0";}'
    su = ""
    for i in range(0, len(data)):
        num = ord(data[i])
        num = num + ((i % 10) + 2)
        num = num ^ i
        su = su + chr(num)
    
    a = base64.b64encode(bytes(su, encoding = 'utf-8'))
    b = urllib.parse.quote(a)
    print(b)
    

    到网上看了一位师傅(瑞雪丰年)的wp,按他的说法如果加密为str的话会出错,我也搞不明白为什么。。

    照这位师傅的方法,把num写入到二进制文件中再读取出来

    import base64
    import urllib.parse
    
    data = 'O:5:"human":10:{s:8:"xueliang";i:576;s:5:"neili";i:652;s:5:"lidao";i:77;s:6:"dingli";i:66;s:7:"waigong";i:0;s:7:"neigong";i:0;s:7:"jingyan";i:0;s:6:"yelian";i:0;s:5:"money";i:2000000;s:4:"flag";s:1:"0";}'
    with open('C:\\Users\\pc\\Desktop\\a.bin', 'wb') as f:
        for i in range(0, len(data)):
            num = ord(data[i])
            num = num + ((i % 10) + 2)
            num = num ^ i
            f.write(bytes([num]))
    
    d = open('C:\\Users\\pc\\Desktop\\a.bin', 'rb').read()[:]
    a = base64.b64encode(d)
    b = urllib.parse.quote(a)
    print(b)
    

    跑出cookie值,用burp抓包修改cookie,加满属性学会如来神掌后打败魔头,拿到flag

    flag{a13d82fe0daf4730eac8f8e0d4c17e72}

    著作权归作者所有。
    商业转载请联系作者获得授权,非商业转载请注明出处。
    原文: https://loong716.github.io/2019/05/07/Bugku.html#insert-into%E6%B3%A8%E5%85%A5

    相关文章

      网友评论

          本文标题:BugkuCTF 魔头

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