[FlareOn4]login

20 篇文章 0 订阅

[FlareOn4]login

Start

前端验证flag:
在这里插入图片描述
提取:

var flag = document.getElementById("flag").value;
var rotFlag = flag.replace(/[a-zA-Z]/g, function(c){return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);});
if ("PyvragFvqrYbtvafNerRnfl@syner-ba.pbz" == rotFlag) {
    alert("Correct flag!");
} else {
    alert("Incorrect flag, rot again");
}

看到关键的一条加密:

String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);

分开成三部分进行分析:
1:设res1 = c <= "Z" ? 90 : 122
每次传入一个字母,看看是大写还是小写,并且对应z的ascii码。
2:设res2 = c.charCodeAt(0) + 13
将当前字符的ascii值加13
3: res1 >= res2 ? res2 : res2 - 26
最后看看加完的值是不是大于当前的Z,如果是的话就减26,否则输出+13后的结果,也就是res2
那么就可以反过来了。-13之后小于当前字符对应的A的时候,就+26,否则就直接-13,直接上exp.py:

enc = 'PyvragFvqrYbtvafNerRnfl@syner-ba.pbz'
flag = ''
for i in enc:
    if ord(i) >= 65 and ord(i) <= 90:
        if ord(i) - 13 < 65 :
            flag += chr(ord(i) + 13)
        else:
            flag += chr(ord(i) - 13)
    elif ord(i) >= 97 and ord(i) <= 122:
        if ord(i) - 13 < 97 :
            flag += chr(ord(i) + 13)
        else:
            flag += chr(ord(i) - 13)
    else:
        flag += i

print(flag)

# ClientSideLoginsAreEasy@flare-on.com

其实整个密文的格式没有改变,然后附件中给了一个Description.txt,里面其实也算是给了提示了,所以这道题基本上就是白给题,就是跟以往遇到的exe或者二进制不太一样,这个需要去了解JS的函数,不过题目用到的函数都可以通过命名来理解,还是比较简单的。

End

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值