一次刷分失败的渗透

文章发布时间:

最后更新时间:

这么能刷?六百六十六,盐都不袋盐了

必须狠狠地开刷

抓包
只能在微信内置浏览器访问

这可不行,使用fiddler进行抓包

慢慢找找到投票的包
保存请求包以便后面重放:

解密?
ai一眼丁真鉴定为jwt加密的token,马上解密看看

https://www.json.cn/jwt
哇贞德食泥鸭,可惜没得HS256的密钥,估计是解不回去https://www.cnblogs.com/wafulo/p/18740245
给它一个面子,爆爆need

yakit
解不出来也能放进yakit里玩,搞搞热加载

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
ts = func(s) { return timestamp()}//测试时间戳
sign = func(p) {
key = `json.cn` // 用于HMAC加密的密钥,这里未知

// JWT头信息
header = {
"alg": "HS256",
"typ": "JWT"
}

// JWT载荷信息
payload = {
"iss": "http://0920.8.51hm8111777.taevuin34.cn/app/auth/5028579",
"iat": timestamp(),//当前时间戳
"exp": (timestamp()+800000),//过期时间
"nbf": timestamp(),
"jti": "EEuDOyeKjC3LiaJy",
"sub": 5028579,
"prv": "5893efe178fbb4eafb984d3196077c3441224363",
"appid": "wxf6c0e8797c3bc2b5",
"guard": "app"
}

// 生成JWT
jwtHeader = codec.EncodeBase64Url(json.dumps(header))
jwtPayload = codec.EncodeBase64Url(json.dumps(payload))
jwtData = f`${jwtHeader}.${jwtPayload}`
jwtSignature = codec.EncodeBase64Url(codec.HmacSha256(key, jwtData))
jwtToken = f`${jwtData}.${jwtSignature}`

return jwtToken
}

阿里嘎多热加载桑,这样就可以用webfuzzer干它了
太好了是数字签名算法,我们没救了

1
2
3
4
5
6
7
8
9
10
11
12
13
POST /api HTTP/1.1
Host: example.com
Connection: keep-alive
Content-Length: 25
Accept: application/json, text/plain, */*
X-Requested-With: XMLHttpRequest
Authorization: Bearer {{yak(sign)}}
User-Agent: ?
Origin: example.com
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9

{"player ids":["{{int(0-65535)}}"]}

总结
没事玩玩这些还是挺好玩的,就是现在环境越来越好了,真打不进去