吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12042|回复: 72
收起左侧

[原创] 网易126邮箱分析过程

  [复制链接]
Jack 发表于 2019-11-25 18:39
本帖最后由 Jack 于 2019-11-25 22:20 编辑

比较少发帖子,不足之处请见谅.

首先到126邮箱登录页面. 我们随便输入字符.然后点击登录.
抓到一个POST地址 : https://passport.126.com/dl/l
可以看到是提交一个Json. 参数如下:
  • channel: 0
  • d: 10
  • domains: ""
  • l: 0
  • pd: "mail126"
  • pkid: "QdQXWEQ"
  • pw: "qI3qKSaLFu7pyWk3TxYzT/C3swukXfMEQMkgDxNKW+I2D4H3HMD74pzuf2AmibXhFCN6SLr3mU8I5oEik0zwyTlApRObHveSELC9FO3iJinHdVRb0LWPXNN7EGSNgeDrhDJua2dcvdTMIVTFVMUVYj0clQ3M/vec3zT1LCYNcEU="
  • pwdKeyUp: 1
  • rtid: "n1nNaw94yJKSmmKWLjVFpKZLV3dB47gT"
  • t: 1574671174831
  • tk: "b88bbc531c146146ae1da76205bdfe59"
  • topURL: "https://mail.126.com/"
  • un: "123112@126.com"

QQ拼音截图20191125164021.png
那么这些参数都是从哪里来的呢?我们一个一个来. 首先是 pkid参数
我们搜索 pkid 发现出现一大堆结果. 那怎么办呢? 我们换个思路,既然这个 pkid 在很多地址上都有用到那么我们找 &pkid 的赋值
找了一遍后我们发现大部分的 pkid 都来自于 promark 传递给他的,那么我们搜索 promark 最终在 126.f8896d17be8f9e7681be.js 找到了是个固定值 QdQXWEQ
QQ拼音截图20191125165450.png
以防万一我们换个浏览器拉取一遍看看是不是一样的.因为如果是变动的值的话,一般会随时间或者浏览器更换,Cookies更换而改变.
, 换了浏览器后我们发现 pkid 没有变动仍然是QdQXWEQ. 接下来是 tk 参数的获取,tk 就很明了了,直接从 https://passport.126.com/dl/gt?un=邮箱地址&pkid=QdQXWEQ&pd=mail126&channel=0&topURL=https%3A%2F%2Fmail.126.com%2F&rtid= RTID &nocache=1574671174832
返回    
最后我们来获取密码参数是怎么加密的了.
搜索加密这里就要取巧了.直接搜 pw 的话,肯定会搜到一大堆js里面,看得会头晕的.
既然要加密密码,那么肯定需要取 input box 的值,我们用浏览器的开发者工具审查元素
QQ拼音截图20191125174708.png
可以看到有俩个 input 我们复制第二个的ID  pwdtext (备注: 这种办法只适用于没有加密的JS,对于那种有加密的JS一般情况下是无效的.)
我们搜索 pwdtext 发现有好几个获取input的.
QQ拼音截图20191125175135.png
在通过一个一个与密码相关input的赋值传递中,我们最终找到了密码加密的JS.
QQ拼音截图20191125180057.png
MP.encrypt2(this.__password) 显然就是加密密码的JS了.
但是我们要怎么把JS代码提取出来呢?. 这里需要用到俩个工具, Chrome的 [JavaScript and CSS Code Beautifier]插件和VSCode 当然你用其他的反混淆工具和notepad++也开始可以的.
把解析好的JS代码复制到 VSCode中. 我们搜索 encrypt2
QQ拼音截图20191125180953.png
复制encrypt2 函数并且修正一下方便我们之后调用

function encrypt2(e) {
    var Key = "-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5gsH+AA4XWONB5TDcUd+xCz7ejOFHZKlcZDx+pF1i7Gsvi1vjyJoQhRtRSn950x498VUkx7rUxg1/ScBVfrRxQOZ8xFBye3pjAzfb22+RCuYApSVpJ3OO3KsEuKExftz9oFBv3ejxPlYc5yq7YiBO8XlTnQN0Sa4R4qhPO3I2MQIDAQAB-----END PUBLIC KEY-----";
    var t = RSA.getPublicKey(Key);
    return RSA.encrypt(e, t)
}
然后我们搜索 RSA = 找到RSA后,我们将它和它上面所有的函数全部复制.(备注:可以不用全部复制,但是需要自己手动把错误一个一个修正,所有我这里是直接全部复制下来)
QQ拼音截图20191125182113.png
复制完后我们把JS拉进 JS调试器里试一下.
QQ拼音截图20191125182606.png
好了,密码加密JS完成了. 最后剩下一个 rtid 参数了.
老样子,我们搜索 rtid 可以看到 rtid 来自 window._$RTID 的赋值
QQ拼音截图20191125183041.png
然后搜索 window._$RTID 得知他来自于一个函数的返回值. 下断点,
QQ拼音截图20191125185607.png
QQ拼音截图20191125183630.png
function GetRtid() {
    var e = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
        t = 32,
        i = [];
    for (; t-- > 0;)
    i[t] = e.charAt(Math.random() * e.length);
    return i.join("")
}
OK,所有参数都得到了. 那么本次教程结束.

免费评分

参与人数 21威望 +1 吾爱币 +24 热心值 +20 收起 理由
Hmily + 1 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
evayang + 1 + 1 热心回复!
idiots + 1 + 1 谢谢@Thanks!
setycyas + 1 + 1 我很赞同!
lookerJ + 1 热心回复!
TurtleX + 1 我很赞同!
忘了世界的人 + 1 + 1 谢谢@Thanks!
daniel7785 + 1 用心讨论,共获提升!
ytw6176 + 2 + 1 谢谢@Thanks!
hnzzstw + 1 谢谢@Thanks!
魂殇 + 1 JS好难学~没java基础{:1_908:}
栀蓝 + 1 + 1 谢谢@Thanks!
椎名牧 + 1 + 1 用心讨论,共获提升!
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
52pojieWd + 1 用心讨论,共获提升!
黑色枪骑兵 + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
策士 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
艹123 + 3 + 1 用心讨论,共获提升!
善变的侠客 + 1 + 1 我很赞同!
l986475227 + 1 + 1 谢谢@Thanks!
勤勤学长 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ixsec 发表于 2019-11-26 11:05
azw80 发表于 2019-11-25 19:40
function encrypt2(e) {
    var Key = "-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQK ...

js 3617line 有定义
1983 发表于 2019-11-25 18:55
虽然今天网易爆了个丑闻,但是不影响大家继续学习的热情!
芝麻KK 发表于 2019-11-25 18:52
腿毛哥 发表于 2019-11-25 18:53
谢谢楼主分享 学习一下
lvcha128 发表于 2019-11-25 18:54
虽然看不懂 但支持下
易认真就输啦 发表于 2019-11-25 19:06
学到了!
yuwenjingyu 发表于 2019-11-25 19:35
谢谢分享,入门新手看来要学的,很多很多
azw80 发表于 2019-11-25 19:40
function encrypt2(e) {
    var Key = "-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5gsH+AA4XWONB5TDcUd+xCz7ejOFHZKlcZDx+pF1i7Gsvi1vjyJoQhRtRSn950x498VUkx7rUxg1/ScBVfrRxQOZ8xFBye3pjAzfb22+RCuYApSVpJ3OO3KsEuKExftz9oFBv3ejxPlYc5yq7YiBO8XlTnQN0Sa4R4qhPO3I2MQIDAQAB-----END PUBLIC KEY-----";
    var t = RSA.getPublicKey(Key);
    return RSA.encrypt(e, t)
}
key是自己瞎写的吗?
宁采成 发表于 2019-11-25 19:41
这么多逻辑iffor循环看着都头疼
bacon 发表于 2019-11-25 19:44
太牛了,为你能力点赞!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 01:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表