首页
社区
课程
招聘
[原创]网易126邮箱分析过程
发表于: 2019-11-25 18:58 6778

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

2019-11-25 18:58
6778
比较少发帖子,不足之处请见谅.

首先到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"


那么这些参数都是从哪里来的呢?我们一个一个来. 首先是pkid参数
我们搜索pkid发现出现一大堆结果. 那怎么办呢? 我们换个思路,既然这个pkid在很多地址上都有用到那么我们找&pkid的赋值
找了一遍后我们发现大部分的pkid都来自于promark传递给他的,那么我们搜索promark最终在126.f8896d17be8f9e7681be.js找到了是个固定值QdQXWEQ

以防万一我们换个浏览器拉取一遍看看是不是一样的.因为如果是变动的值的话,一般会随时间或者浏览器更换,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返回{"ret":"201","tk":"64753ae53e14069cba2be0ac71421350"}
最后我们来获取密码参数是怎么加密的了.搜索加密这里就要取巧了.直接搜pw的话,肯定会搜到一大堆js里面,看得会头晕的.既然要加密密码,那么肯定需要取input box的值,我们用浏览器的开发者工具审查元素
可以看到有俩个input我们复制第二个的ID  pwdtext(备注: 这种办法只适用于没有加密的JS,对于那种有加密的JS一般情况下是无效的.)我们搜索pwdtext发现有好几个获取input的.
在通过一个一个与密码相关input的赋值传递中,我们最终找到了密码加密的JS.

MP.encrypt2(this.__password)显然就是加密密码的JS了.但是我们要怎么把JS代码提取出来呢?. 这里需要用到俩个工具, Chrome的 [JavaScript and CSS Code Beautifier]插件和VSCode当然你用其他的反混淆工具和notepad++也开始可以的.把解析好的JS代码复制到 VSCode中. 我们搜索encrypt2复制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后,我们将它和它上面所有的函数全部复制.(备注:可以不用全部复制,但是需要自己手动把错误一个一个修正,所有我这里是直接全部复制下来)复制完后我们把JS拉进 JS调试器里试一下
.
好了,密码加密JS完成了. 最后剩下一个rtid参数了.老样子,我们搜索rtid可以看到rtid来自window._$RTID的赋值然后搜索window._$RTID得知他来自于一个函数的返回值. 下断点,
function GetRtid() {
    var e = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
        t = 32,
        i = [];
    for (; t-- > 0;)
    i[t] = e.charAt(Math.random() * e.length);
    return i.join("")
};

OK,所有参数都得到了. 那么本次教程结束.

[课程]Android-CTF解题方法汇总!

最后于 2019-11-26 16:24 被ezrealik编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (9)
雪    币: 12418
活跃值: (4017)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
楼主的JS调试器能分享一下吗?
2019-11-26 01:59
0
雪    币: 4899
活跃值: (9334)
能力值: ( LV9,RANK:181 )
在线值:
发帖
回帖
粉丝
3
后面的事情不能干了,再干就进去了。
2019-11-26 09:43
0
雪    币: 3935
活跃值: (187)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
js 调试器看起来好厉害~~
2019-11-26 11:42
0
雪    币: 1570
活跃值: (383)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
Sam.com 楼主的JS调试器能分享一下吗?
就是精易的JS调试器.
2019-11-26 15:36
0
雪    币: 12418
活跃值: (4017)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
ezrealik 就是精易的JS调试器.
精易没有帐号,搜索到的也和你这个不同,能在这分享下吗?谢谢
2019-11-29 00:19
0
雪    币: 1570
活跃值: (383)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
Sam.com 精易没有帐号,搜索到的也和你这个不同,能在这分享下吗?谢谢
就是精易编程助手自带的那个JS调试器哦,编程助手下载不用帐号的.  https://www.lanzous.com/i6osxab
最后于 2019-11-29 00:28 被ezrealik编辑 ,原因:
2019-11-29 00:28
0
雪    币: 1700
活跃值: (676)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
精易的比chrome还好用么,没用过精易的,有啥特殊功能?
2019-11-29 01:26
0
雪    币: 1570
活跃值: (383)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
弱冠甕卿还仓 精易的比chrome还好用么,没用过精易的,有啥特殊功能?
比chrome好用,个人感觉... 主要是我C调用的是MSScript所以用精易方便一些. 
另外,同样的代码用精易的可以运行,chrome就会报错. 可能是俩者语法是有差别的. 具体还得根据你自己常用的编程语言选择
最后于 2019-11-29 18:09 被ezrealik编辑 ,原因:
2019-11-29 17:55
0
雪    币: 12418
活跃值: (4017)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
ezrealik Sam.com 精易没有帐号,搜索到的也和你这个不同,能在这分享下吗?谢谢 就是精易编程助手自带的那个JS调试器哦,编程助手下载不用帐号的.&n ...
谢谢了,你早说"精易编程助手"我就不用麻烦你了,因为我不用易语言没逛过易论坛,所以搜索了"精易JS调试器"之类的,硬是没找到你这个,总之谢谢了
2019-11-30 05:31
0
游客
登录 | 注册 方可回帖
返回
//