dwr java有返回值但是js获取不到返回值_js逆向 | W博模拟登录流程分析和实现

本文介绍了W博模拟登录的流程,从账号加密开始,通过prelogin接口获取RSA密钥,接着密码RSA加密,调用login.php接口获取通行证ticket,最终获取登录cookie。在抓包分析中,详细讲解了如何找到关键接口和参数,特别是密码加密逻辑。同时,提供了账号加密的代码实现,减少了不必要的请求。
摘要由CSDN通过智能技术生成

    一个人拥有此生此世是不够的,他还应该拥有诗意的世界。

7f6f168f737b7f170703553f6d13fd75.png

1、流程分析

本文只作为技术分享,如有侵权请联系本人删除。

感谢b站up主留樱雅子的技术分享!

一、目标网站

aHR0cHM6Ly93ZWliby5jb20v

针对页面登陆入口分析

二、实现流程分析

首先需要明确下登录的目的,是为了获取登录后的cookie,然后携带着cookie去请求页面采集资源。

为了达到这个目的,我们需要知道cookie是在哪里被设置的,w博的cookie可以直接搜索找到set-cookie的接口。

紧接着分析接口参数的来源,是加密生成,还是某一个接口的返回值。如果是接口返回值,那么就继续分析新接口的参数,依次向前推。

寻找接口也是一个逆向推理的过程,从目的处推导到入口处。

分析后的登陆流程如下

  • 账号加密
  • 携带加密账号,调用prelogin接口,获取rsa的密钥和其他必要参数
  • 密码rsa加密
  • 携带加密密码和其他必要参数,调用login.php接口,获取通行证ticket
  • 携带通行证调用login接口,获取成功登陆后的cookie

2、抓包分析

建议使用抓包工具,用chrom开发者模式查找接口,某些接口看不到返回信息,这就造成了一部分人卡死在抓包的位置。

清空cookie,清空cache,清空账号输入框的默认账号信息。

打开抓包工具,设置过滤出请求中含有login的接口。

1、登录框输入账号,鼠标点击其他地方,成功抓到prelogin接口,通过使用同一个账号多次触发prelogin接口,可以发现参数su就是账号的加密,响应信息中包含有密钥pubkey,rsakv,nonce,servertime必须信息。

a39beaa91f87b6434fdd6b3ff2f2214d.png

2、直接输入正确密码,如下图,从新增的接口中,依次查看参数和响应,首先发现login.php接口,响应了一个通行证的url,请求参数有一部分来源与prelogin接口的响应,新增的参数为sp,而sp的值就是密码加密后的值(后面分析js会看到对密码加密的代码)

8b4519cfdcba9ed7e590f54e7d7520d0.png

紧接着又请求了通行证的url,返回信息截图如下,里面包含ticket的值

b51433880ea58ad60faea7abb7fe4592.png

接着调动ssologin.js的接口,返回一个js文件,复制js内容到编辑器中,通过搜索参数可以确定生成的js文件就是后面分析加密要找的js文件。

继续向下查看新增的接口,wbsso/login接口处使用了通行证生成的ticket,响应信息为true,下方红框的name与自己首页的名字一样。

1a4b1847a97971da4f50c544f552a8e5.png

从接口处,看着像是登录成功的样子,不然怎么会显示自己的名称呢? 继续查看下cookie,如下图,请求成功后设置了大量的cookie,拿着cookie与成功页面的cookie对比,完全一致。

3c595004032c514ef1b6948133c81fd6.png

ok,整个抓包的流程,相对来说比较简单,注意观察参数和响应,注意控制抓包的速度,留意新增的接口,逐个查看,大胆猜测。

3、加密逻辑分析

复制 ssologin.js接口生成的js到编辑器中,依次查看加密参数。 直接搜索参数su,外加一个空格。 可以看到加密方式,首先对username进行url编码,再base64编码。

e0ffdf9c4b672c4898746a2717325bce.png

搜索_:,可以看到_的值为13位时间戳

e0bba7e93f8470accb3b06c4d57800d4.png

继续搜索sp,可以看到sp是明文密码搭配其他参数,通过rsa加密后的值

ba7121376f1195277d56e1c1edc06439.png

其他参数均为借口返回的值,不涉及到加密。

4、代码实现

账号加密实现

e4269b6f940b66afa5a99774f53c9258.png

重点需要注意的是rsa加密的python实现

703700080f521797a1b8032f1ef6c1aa.png

另外需要知道的技巧是,在调用login.php接口生成通行证url的时候,修改returntype的值为TEXT,可以直接获取到ticket的值,减少一次请求,如下图。

06b8941923a889f2fe7fc5a56a24d2dc.png

完整代码请联系作者获取,代码中未涉及到验证码验证问题,尽量使用自己的账号密码登录测试。

对你有帮助,请扫码关注!感谢!

eb57b1ff467a5f11ae9f677d8688f221.png

公众号:逆向旅行

微信号:fzcoder888888

定期分享Python进阶技术,爬虫

str4表示client_ver

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值