buu FlareOn4 login

本文最后更新于:2023年10月15日 晚上

[FlareOn4]login

直接看JS

1
2
3
4
5
6
7
8
9
10
11
document.getElementById("prompt").onclick = function () {
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");
}
}

其中

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

这句代码的意思就是将字符后移13位,越界了就转到26个字母的开头(超过Z循环回A),循环进行

一共就26个字母,一个字母这样操作两次不就回去了嘛,还是原来那个字母。

所以给这句代码再运行一次就行了。

懒得写脚本了,直接在原代码上修改:

1
2
3
4
5
var flag = "";
var rotFlag = "PyvragFvqrYbtvafNerRnfl@syner-ba.pbz";
flag = rotFlag.replace(/[a-zA-Z]/g, function(c) {
return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);
});

JavaScript 没有任何打印或者输出的函数。

tnnd 还要想办法输出。

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<body>
<script>
var flag = "";
var rotFlag = "PyvragFvqrYbtvafNerRnfl@syner-ba.pbz";
flag = rotFlag.replace(/[a-zA-Z]/g, function(c) {
return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);
});
console.log(flag);
</script>
</bod>
</htm>

最后在控制台看到输出

2023090201


buu FlareOn4 login
http://example.com/2023/09/02/[FlareOn4]login/
作者
sawtooth384
发布于
2023年9月2日
许可协议