带领全网朋友,完成粉笔登录加密分析,再次换种玩法 Y25

举报
梦想橡皮擦 发表于 2022/04/29 10:06:23 2022/04/29
【摘要】 📢📢📢📢📢📢💗 你正在阅读 【梦想橡皮擦】 的博客 ⛳️ Python 爬虫实战场景本次要解决的加密战场是粉笔,域名网址是:U2FsdGVkX1+TW3WG675sAY/ppQZP881CUfDzQrO+KibJEh0YwXOFxwn5e4O4HdlE。本次使用的是 AES 加密,密钥是 xiangpica进入首页之后,直接点击登录操作,然后随机输入内容,看是否存在验证码逻辑。...

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客

⛳️ Python 爬虫实战场景

本次要解决的加密战场是粉笔,域名网址是:U2FsdGVkX1+TW3WG675sAY/ppQZP881CUfDzQrO+KibJEh0YwXOFxwn5e4O4HdlE

本次使用的是 AES 加密,密钥是 xiangpica

进入首页之后,直接点击登录操作,然后随机输入内容,看是否存在验证码逻辑。

输入如下内容,捕获请求数据:

  • 手机号/邮箱:158****1234(纯粹测试数据,无此号码)
  • 密码:123456;

本次抓包软件使用 fiddler,截获到的请求如下所示:

页面请求数据如下所示,可以看到只有 password 参数进行了加密操作,通过观察可以猜测是 base64 加密,后续可以进行验证。

接口如下所示:

  • 请求网址: https://Python 脱敏处理/api/users/loginV2?kav=12&app=web&client_context_id=c97948b29e8f984595852d3d1da9f48d
  • 请求方法: POST

在请求地址中发现一个 client_context_id 参数,目测是 md5 加密,后续我们也进行一下相关验证。

⛳️ Python 实战爬虫加密参数解析

polyfills-.js:formatted 文件添加断点,再次点击登录按钮,等待断住

依旧是采用堆栈跟踪的形式,寻找参数加密位置。

断点可以稍微前置一些,在赋值位置检索变量加密来源。

断点打在这里,还是没有发现数据加密来源,可以继续前移断点位置。
在反复跟进断点的过程中,发现了下述代码:

const l = n.serializeBody();

其中的 n 存放了加密之后的密码串,添加断点。
接下来的步骤就是反复测试,不断查阅堆栈的方法,其中有一个函数名成功引起了注意, LoginByPsw

定位到该方法中,发现了加密位置,函数,以及请求数据的相关逻辑。

其中 password 加密的形式如下所示:

var n = {
  password: this.encrypt(this.password),
  persistent: !0,
  app: "web",
};

this.encrypt() 函数中的加密逻辑比较简单,直接查阅代码即可。

encrypt(n) {
    return window.encrypt(this.publicKey, n)
}

其中 punlicKey 在文件中检索一下,确定该公钥值。

逻辑找到之后,可以直接使用前面博客中用到的知识点,伪造 JS 环境,当然直接扣取 JS 也是可行的。

URL 中的加密参数

此时还剩下一个 URL 中的加密参数 client_context_id 还未解决,寻找一下相关代码。

在开发者工具中直接检索关键字,得到下图结果。

得到加密内容如下所示:

getClientContextId() {
	this.client_context_id = "" + wr.Md5.hashStr("" + this.userInfo.id + this.aliShenceTime + this.aliShenceRandom)
}

不过该加密函数貌似在登录接口用处不大,因为在其中的用户 ID 信息在登录前,并未生成,所以大家忽略即可,aliShenceTime 获取时间戳,aliShenceRandom 获取一个随机数。

📣📣📣📣📣📣
右下角有个大拇指,点赞的漂亮加倍

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。