记录一次元宇宙游戏《The Sanbox》网页登录过程分析

124 阅读2分钟

介绍《The Sanbox》

首先简单介绍下《The Sanbox》,元宇宙游戏。 是一个以社区为主导的平台,创作者们能在区块链上利用体素ASSET和游戏体验获取收益。总之,不用管他是什么,当一个普通网站来逆向分析就行~

登录过程逆向分析

1、 首先 打开网址,选择邮箱登录方式

image.png

2、 F12打开调试工具,并点击登录,尝试抓取登录接口

image.png

发现登录接口没有账号密码,所以第一时间预感参数,账号密码肯定是经过加密传输,经过比对,authorization这个字段最可疑。

3、 尝试寻找加密参数的构建代码位置

搜索 "Basic ",后面有个空格,因为authorization的格式:Basic XXXXXXX

image.png

搜索之后,发现有大量的匹配js文件,扑街,没办法一个个看呗。随便点几个比对发现,这块的代码逻辑都是一样的,还好还好,以为要一个个排查过去。 大胆推测代码的加密逻辑是: "Basic "+ (账户:密码)的base64加密

4. 验证

敲点代码验证一下,直接附上

import base64
import requests

def login_in(email,pwd):
    """登录并获取用户id"""
    # 对字符串进行编码
    bs4str = base64.b64encode(f"{email}:{pwd}".encode())
    # print(bs4str.decode())
    url = "https://api.sandbox.game/auth/login"
    proxies = {'http': 'http://127.0.0.1:11000', 'https': 'http://127.0.0.1:11000'}
    payload = "{}"
    headers = {
        'authority': 'api.sandbox.game',
        'cache': 'no-cache',
        'pragma': 'no-cache',
        'x-csrf-token': '',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
    }
    headers["authorization"] = f'Basic {bs4str.decode()}'
    response = requests.request("POST", url, headers=headers, proxies=proxies, data=payload)
    print(response.text)

if __name__ == '__main__':
    login_in("xxxx@qq.com","xxxxxxx")

执行测试

image.png

正常拿到返回值,搞定收工~

其实本文只是展现了正确的思路,错误的过程我就不展示了,一开始花了好多时间在调试代码上面。( Ĭ ^ Ĭ )

最后

写下这篇文章有什么用,额,好像没什么用。就是玩玩。