京东登录JS逆向
一、g.html分析
之前一直没有做过滑块登录的逆向,最近发现京东的登录JS相对来说较为简单,因此写下这篇文章拿来学习与记录
这里以京东登录页为例: https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F
打开京东登录页面https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F输入账号密码登录, 发现会弹出一个滑块验证码如图所示:
通过查看页面图片发现是Base64数据图片, 搜索Base64由g.html
的接口返回的数据
观察响应结果知道bg
参数为背景图片Base64, patch
为滑块Base64图片, 接下来开始分析g.html
接口参数, 包含参数如下所示:
请求头经过观察无加密参数, 可自行测试这里忽略, 经过多次刷新页面可发现其中appId
, secret
, product
, lang
均为固定参数, callback
看似一个随机数, 因此我们可先重点分析参数e
和 j
老规矩先搜索e
发现在fcf.html
接口中以文本形式返回, 如下所示:
j
参数发现在jsTk.do
接口中, 如下所示:
现在问题被分解为如何调用hfcf.html
接口获取e
与调用jsTk.do
接口获取j
两个参数了
二、fcf.html分析
观察fcf.html
接口发现有1个query参数a
和2个formdata参数g
和d
, 还是找调用栈debug, 发现接口调用的js
在VM中,示例如下:
通过控制台观察发现z
参数就是包含query中a
参数的字符串, n
参数就是formdata需要传递的g
和d
的json, 接下来继续往上找z
和 n
, 由上图可以发现z= td_collect.tdencrypt(z)
, 需要我们找到之前的z
, 而n.g=td_collect.tdencrypt(u)
, n.d=_JdJrRiskClientCollectData=td_collect.collect()
接下来看经过td_collect.tdencrypt(z)
之前的z
参数, 重新debug
, 控制台输出z
观察, 如下所示:
将fc
, fp
, jtb
, t
几个非明文拿去搜索, 发现fc
参数就是jsTk.do
接口的eid
参数, t
是 y.html
接口的参数, 如下图所示:
三、jsTk.do分析
未完待定...
原创声明
平台文章均为原创文章,未经许可,禁止转载。
如需转载,请联系作者获取授权,并注明来源及原文链接。