首页 > 其他分享 >[FlareOn4]login 1

[FlareOn4]login 1

时间:2023-05-05 13:44:06浏览次数:27  
标签:function 13 getElementById Des 26 FlareOn4 flag login

查壳(养成习惯了,不管有没有用都要来那么一下):

发现没啥,进IDA瞅瞅:

给了一堆字串,且没有主函数,那么我们退出IDA,运行一下:

checkflag,那么必定有方法去检查这玩意:继续找F12:

<!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 ("[email protected]" == rotFlag) {
                    alert("Correct flag!");
                } else {
                    alert(rotFlag);
                }
            }
        </script>
    </body>
</html>

找到了那么个方法:有我们不认识的函数(查呗):

document.getElementById:大概的意思是从文件中获取字串,放在这里就是当我们点击check的时候,获取我们输入的字符串。

var flag = document.getElementById("flag").value:将获得的字串给flag

flag.replace:对flag进行某种变化

两个参数:/[a-zA-Z]/g 和 一个方法返回的值 function(c)

/[a-zA-Z]/g :一种正则表达式:指代所有的字母,包括大小写。

到这里我们大概懂在做啥了:对我们输入的flag的所有字母进行变化,变化后如果与“[email protected]”相同,那么我们输入的flag就是正确的。

那么我们就需要了解字母是怎么替换的:function(c)

这里我们可以拆开来看,首先我们先看最终返回的值是啥 c : c - 26,也就是说在某种条件成立的情况下要么返回 它自身+13,要么返回 (它自身+13)-26 后的值

往前推进能看到条件,(c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13):首先是判断从输入的flag中拿出的字符是否为大小写。 如果该字符为小写,则拿‘z’字符和该字符+13的值进行比较(这里注意,这里重新给c赋值了,所以后边才会有+13的操作),来决定返回的是 它自身+13,还是返回 它自身+13-26 后的值,反之则是拿‘Z’来比较。

这里有个点要注意如果用的不是python来写脚本的话要注意越界的问题,不然始终都是错误的。

上脚本(很明显,凯撒的套路)咯,定点爆破:

#include <bits/stdc++.h>

#define int long long
#define endl '\n'
using namespace std;

int32_t main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    string Des = "[email protected]";
    string flag = "";
    for (int i = 0; i < Des.size(); i++) {
        if((Des[i] >= 'a' && Des[i] <= 'z') ||(Des[i] >= 'A' && Des[i] <= 'Z')){
            //写凯撒的加密方法
            for (int j = 'a'; j <= 'z'; j++) {
                int c = (int)j;
                char a = (c <= 'Z' ? 90 : 122) >= (c += 13) ? char(c) : char(c - 26);
                if(a == Des[i])flag += j;
            }
            for (int j = 'A'; j <= 'Z'; j++) {
                int c = (int)j;
                char a = (c <= 'Z' ? 90 : 122) >= (c += 13) ? char(c) : char(c - 26);
                if(a == Des[i])flag += j;
            }
        }else{
            flag += Des[i];
        }
    }
    cout << "flag{" << flag << "}" << endl;
    return 0;
}

对于这类,感觉还是爆破比较来的快,不然费脑子(个人脑缺失

得到flag{[email protected]}收工。

标签:function,13,getElementById,Des,26,FlareOn4,flag,login
From: https://www.cnblogs.com/TFOREVERY/p/17373028.html

相关文章

  • Identity – user login, forgot & reset password, 2fa, external login, logout 实
    前言之前写过一篇 Identity–UserLogin,ForgotPassword,ResetPassword,Logout,当时写的比较简陋,今天有机会就写多一篇实战版.建议先阅读之前那篇做一个warmup.本篇会讲到1.userlogin2.forgotandresetpassword3.twofactor4.logout5.externallogin......
  • LoginAuthorizationFilter
    usingMicrosoft.AspNetCore.Mvc.Filters;usingPT.Common;usingPT.Model;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;namespacePT.Web.Mvc.App_Start{///<summary>///登录授权过滤///<......
  • flask-login 初识
    一、在简单应用中的配置示例1.在初始化application时注册一个LoginManager实例对象fromflask_loginimportLoginManagerlogin_manager=LoginManager()defcreate_app(config_type='default'):config_class=config[config_type]app=Flask(__name__)......
  • SpringSecurity过滤器之DefaultLoginPageGeneratingFilter
    DefaultLoginPageGeneratingFilter用于生成默认登录页。privatevoiddoFilter(HttpServletRequestrequest,HttpServletResponseresponse,FilterChainchain) throwsIOException,ServletException{ booleanloginError=isErrorPage(request); booleanlogoutSuccess......
  • 后台servlet LoginOfAdminSer
    packagecn.service.servlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse......
  • Vue 登录login post请求 security UserDetailsService 获取参数为""
    背景原请求将数据放到params中,导致数据拼接在请求地址后面,具有高级安全隐患。请求方法:axios.request({url:'/login',method:'post',params:{username:'****',password:'****'}})出现的问题将params改成data,使数据放在请求体中,但后端自定义的U......
  • Linux login命令
    Linuxlogin命令Linuxlogin命令用于登入系统。login指令让用户登入系统,您亦可通过它的功能随时更换登入身份。在Slackware发行版中,您可在指令后面附加欲登入的用户名称,它会直接询问密码,等待用户输入。当/etc目录里含名称为nologin的文件时,系统只root帐号登入系统,其他用户一......
  • Please enter your authorization code to login. More information in http://servic
    1、问题出现背景集简云配置出现如下错误需要重新授权{"Code":2002,"Msg":"Failed","Data":{"error":"(535,b'LoginFail.Pleaseenteryourauthorizationcodetologin.Moreinformationinhttp://ser......
  • repository does not exist or may require 'docker login'
    理论上从docker hub拉取镜像时是不需要的登录,所以就只有一个原因: repositorydoesnotexist仓库类型将私有改成公开 ......
  • spring security FormLoginConfigure的作用和源码解读
    这一节来研究下springsecurity中FormLoginConfigurer这个配置器的作用一、综述FormLoginConfigurer本质上还是一个SecurityConfigurer,用来对HttpSecurity这个构建器进行配置,它用来对表单登录的功能进行配置,通过HttpSecurity#formLogin()方法来给HttpSecurity对象中添加此配......