buu-reverse-[FlareOn4]login

核心代码解读

html源码可以直接查看核心是jq


            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);});
                alert(rotFlag)
                if ("PyvragFvqrYbtvafNerRnfl@syner-ba.pbz" == rotFlag) {
                    alert("Correct flag!");
                } else {
                    alert("Incorrect flag, rot again");
                }
            }

代码含义就是:

  • 正则匹配每一个字母
  • 对每一个匹配到的字符进行如下操作:(c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26

也就是

if(c<='Z'){
    cmp=90;//Z
}else{
    cmp=122;//z
}

c = c + 13;

if(cmp >= c){//替换后,码大等原来的
    c = c; 
}else{
    c = c - 26;
}
cout<<c;

注册机

python字符数字运算需要用转换比较麻烦,这题东西也少就直接用C写了。

本质上是个半暴力,因为最后要么是c = c+13要么是c=c+13-26,而且是对单个字符的,时间复杂度可控

两种可能的逆向式子

  • c-=13
  • c = c - 13+26
#include <bits/stdc++.h> 
using namespace std;

bool isAlpha(char c){
    if(c>='A' && c<='Z')
        return true;
    if(c>='a' && c<='z')
        return true;
    return false;
}

int main(){
    /////////////ClientSideLoginsAreEasy@flare-on.com
    /////////////ClientSidefoginsAreEasy@flare-on.com
    /////////////PyvragFvqrsbtvafNerRnfl@syner-ba.pbz
    char s[105]="PyvragFvqrYbtvafNerRnfl@syner-ba.pbz";
    char flag[105];
    char tmp; 
  
    for(int i=0; i<strlen(s); i++){
        if(isAlpha(s[i])==0){
            flag[i]=s[i];
            continue;
        }
  
        tmp=s[i]-13;
            if(i==10)
                cout<<endl<<tmp<<endl;
        if(isAlpha(tmp)){
            flag[i]=tmp;
        }
        tmp = s[i]-13+26;
        if(isAlpha(tmp)){
            flag[i]=tmp;
        }
    }
    flag[strlen(s)]='\0';
    cout<<flag;
  
    return 0;
}

其中执行结果是:ClientSidefoginsAreEasy@flare-on.com

但是却不对,原因是第十一个字符应该是第一种式子的结果

也就是是L不是f,修改后:ClientSideLoginsAreEasy@flare-on.com

就是flag了:flag{ClientSideLoginsAreEasy@flare-on.com}image.png

Last modification:March 5, 2021
如果觉得我的文章对你有用,请随意赞赏。咖啡(12RMB)进度+100%,一块巧克力(1RMB)进度+6%。
(赞赏请备注你的名称哦!后台记录中来自理工小菜狗)