攻防世界 flag_in_your_hand1

题目

下载附件并解压,有文件如下:

分析与解题

  1. 打开index.html
  2. 查看网页源码,找到关键部分
<script src="script-min.js"></script>
<script type="text/javascript">
    var ic = false;
    var fg = "";

    function getFlag() {
        var token = document.getElementById("secToken").value;
        ic = checkToken(token);
        fg = bm(token);
        showFlag()
    }

    function showFlag() {
        var t = document.getElementById("flagTitle");
        var f = document.getElementById("flag");
        t.innerText = !!ic ? "You got the flag below!!" : "Wrong!";
        t.className = !!ic ? "rightflag" : "wrongflag";
        f.innerText = fg;
    }
</script>
  1. 如果通过检查,getFlag可以生成我们需要的flag。
  2. 查看script-min.js,定位到关键部分
function ck(s) {
    try {
        ic
    } catch (e) {
        return;
    }
    var a = [118, 104, 102, 120, 117, 108, 119, 124, 48,123,101,120];
    if (s.length == a.length) {
        for (i = 0; i < s.length; i++) {
            if (a[i] - s.charCodeAt(i) != 3)
                return ic = false;
        }
        return ic = true;
    }
    return ic = false;
}
  1. 因此只要反推出返回true的s即可。求解代码如下
a = [118, 104, 102, 120, 117, 108, 119, 124, 48, 123, 101, 120]
s = ""
for i in a:
    s += chr(i - 3)
print(s)
# s = security-xbu
  1. 在token框中输入security-xbu

flag: RenIbyd8Fgg5hawvQm7TDQ

原文地址:https://www.cnblogs.com/vict0r/p/13549742.html