测试文件:https://www.lanzous.com/ib3grre
代码分析
<input type="text" name="flag" id="flag" value="Enter the flag" /> <input type="button" id="prompt" value="Click to check the flag" /> <script type="text/javascript"> 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"); } }
这段JS代码实际就是对我们输入的代码进行ROT13加密,就是将该字符替换为后13位的字符,例如A替换为N,N替换为A(超过Z循环回A),因此我们将加密结果PyvragFvqrYbtvafNerRnfl@syner-ba.pbz再次输入,就能得到flag了
在if上面添加一句alert(rotFlag);
get flag!
flag{ClientSideLoginsAreEasy@flare-on.com}