測試文件: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}
