buuctf刷题记录6 [FlareOn4]login

27 篇文章 0 订阅

打开是一个html文件,打开看是一个典型的输入验证问题

<!DOCTYPE Html />
<html>
    <head>
        <title>FLARE On 2017</title>
    </head>
    <body>
        <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");
                }
            }
        </script>
    </body>
</html>

charCodeAt(0)是返回当前字符的Unicode 编码

String.fromCharCode返回Unicode对应的字符串

分析:

如果是大写就是90,小写就为122
与其ascll+13判断
大于为其自己+13,小于为其自己-13

大写都是小于90,故(A-M)是+13,(a-m)是+13
小写都是小于122,故(N-Z)-13,(n-z)是-13

写脚本:

a='PyvragFvqrYbtvafNerRnfl@syner-ba.pbz'
flag=''
for i in a:
    if i >='A' and i<='M':
        flag += chr(ord(i)+13)
    elif i >='a' and i<='m':
        flag += chr(ord(i)+13)
    elif i>='N' and i<="Z":
        flag+=chr(ord(i)-13)
    elif i>='n' and i<='z':
        flag+=chr(ord(i)-13)
    else:
        flag+=i
print(flag)

得到flag: flag{ClientSideLoginsAreEasy@flare-on.com}

后来看别人的wp才知道这是ROT13加密,就是将该字符替换为后13位的字符,例如A替换为N,N替换为A(超过Z循环回A)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值