[HFCTF2020]EasyLogin JWT认证

这里记录一下我写题和学习的过程,具体对JWT还是不太了解的,希望大佬们指点一二

注册账号密码后在登陆的地方抓了个包

发现一个authorization授权,cookie里面有两个参数,感觉这个题应该考的是认证方面的,要用管理员的账户登陆进去才能获得flag,在flag界面只有一个js文件,打开看看

/**
 *  或许该用 koa-static 来处理静态文件
 *  路径该怎么配置?不管了先填个根目录XD
 */

function login() {
    const username = $("#username").val();
    const password = $("#password").val();
    const token = sessionStorage.getItem("token");
    $.post("/api/login", {username, password, authorization:token})
        .done(function(data) {
            const {status} = data;
            if(status) {
                document.location = "/home";
            }
        })
        .fail(function(xhr, textStatus, errorThrown) {
            alert(xhr.responseJSON.message);
        });
}

function register() {
    const username = $("#username").val();
    const password = $("#password").val();
    $.post("/api/register", {username, password})
        .done(function(data) {
            const { token } = data;
            sessionStorage.setItem('token', token);
            document.location = "/login";
        })
        .fail(function(xhr, textStatus, errorThrown) {
            alert(xhr.responseJSON.message);
        });
}

function logout() {
    $.get('/api/logout').done(function(data) {
        const {status} = data;
        if(status) {
            document.location = '/login';
        }
    });
}

function getflag() {
    $.get('/api/flag').done(function(data) {
        const {flag} = data;
        $("#username").val(flag);
    }).fail(function(xhr, textStatus, errorThrown) {
        alert(xhr.responseJSON.message);
    });
}

这里提示我们koa-static,了解到koa-static是一个处理静态文件资源的中间件,搜一下koa是一个web框架,利用JWT来进行客户端认证登录

JSON Web Token 入门教程 - 阮一峰的网络日志 

深入了解Json Web Token之实战篇 - FreeBuf网络安全行业门户

我的理解是token跟session不同,session是在服务器端,而token是在客户端,只需要用户每次登陆的时候携带有效期内的token,即可通过认证登录

 

之前抓包后面的auto就是一个token,JSON Web Tokens - jwt.io这是一个专门解token的网站,根据前面的文档学习,我们这里将加密方式alg改为none代表没有签名加密,将username改为admin管理员登录,将secretid改为[]代表一个空值;因为我们这里alg已经设为了none就没有签名了,我们只需要将前面头部和负载进行base64加密并且拼接即可

可以看到返回了cookie里面两个相关的值,在获取flag的界面抓个包

 

将我们admini账户登录进去获得的东西覆盖它 

感觉有点半猜的写的吧,其他wp我不知道他们怎么知道有那个api.js的文件以及koa的目录结构,这里我不清楚就没有写了,留下一个疑点吧

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值