【RSA2】学习案例:新浪微博评论以及登陆

时间:2024-04-05 22:53:18

新浪微博

我们一起来研究一下javasrcipt逆向学习案例:新浪微博

评论

【RSA2】学习案例:新浪微博评论以及登陆
点开评论并打开开发者工具,让我们一起分析一下。通过向下滑动,可以发现评论信息是通过ajax加载的,看下返回的什么数据。
【RSA2】学习案例:新浪微博评论以及登陆
通过返回的html键,可以看到评论就在里面(提取内容的话只需要用xpath就能拿到了)
转眼看下我们需要什么参数才能拿到数据。
【RSA2】学习案例:新浪微博评论以及登陆
上图可以看到,评论是通过get请求拿到的数据,且url部分是通过拼接产生的。
【RSA2】学习案例:新浪微博评论以及登陆
其中id是当前话题评论的id值,root_comment_max_id是通过请求第一页时候返回的html里面即可找到,rnd就是简单的int(时间戳 * 1000)
【RSA2】学习案例:新浪微博评论以及登陆
最后我们通过整理代码,尝试是否能拿到数据(记得要带上cookie, 微博需要带上才能拿到评论)
下面是部分代码图:
【RSA2】学习案例:新浪微博评论以及登陆【RSA2】学习案例:新浪微博评论以及登陆
运行结果:
【RSA2】学习案例:新浪微博评论以及登陆
成功!


登陆

新浪微博登陆页面
https://login.sina.com.cn/signup/signin.php
打开开发者工具,然后键入账号密码
【RSA2】学习案例:新浪微博评论以及登陆
【RSA2】学习案例:新浪微博评论以及登陆
登陆是通过post请求方式实现的,我们找到post请求
【RSA2】学习案例:新浪微博评论以及登陆
还是一个url拼接, 再往下翻。
【RSA2】学习案例:新浪微博评论以及登陆
【RSA2】学习案例:新浪微博评论以及登陆
并且还传入了一个data参数。
为了发现data里面是否存在定值, 我们多次登陆,比较发现,变值为:servertime, su, nonce, sp
我们看下data里面还有什么参数。通过查看发现,data里面应该会含有我们输入的账号密码,但是里面却找不到。

  1. 但是我们发现一个可疑的字段,pdencode,这不就是password-encode的缩写吗,而且名字写着rsa2。rsa2有公钥和私钥的一种加密算法,通过公钥进行信息加密,接收方就能通过约定好的私钥进行解密。
    我们可以暂定这个密码是通过rsa2加密的。
  2. 我们通过多次尝试,发现su这个字段好像一个base64的加密
    【RSA2】学习案例:新浪微博评论以及登陆
    我们通过对账号进行base64加密比对发现,su就是账号字段
  3. 但是其他参数怎么来的呢?rsa2的公钥在哪?我们通过开发者工具可以找到,在提交post请求之前,我们另外拿到了一个请求【RSA2】学习案例:新浪微博评论以及登陆
    里面正是含有data所需的nonce,servertime,rsakv值。而且含有类似公钥字眼的pubkey。接下来通过断点一探究竟。
    【RSA2】学习案例:新浪微博评论以及登陆
    【RSA2】学习案例:新浪微博评论以及登陆
    断点以后往上翻可以找到,password的加密字段是通过判断使用什么方法加密拿到的,js里面写着是sha1和rsa2两种方法,而rsa加密中rsapubkey,servertime,nonce和password四个值我们之前都已经知道了,我们还原一下js,核心js部分是:
    【RSA2】学习案例:新浪微博评论以及登陆
    以下是部分代码展示
    【RSA2】学习案例:新浪微博评论以及登陆
    【RSA2】学习案例:新浪微博评论以及登陆
    另外需要注意的是,rsa加密会出现一种现象:同一个公钥,同一个信息,加密出来的密文是不一样的,但是在这里不影响使用。
    (另外python版本的rsa为:引用库rsa.PublicKey, binascii.b2a_hex)
    【RSA2】学习案例:新浪微博评论以及登陆

这样我们就拿到登陆所需post的data全部参数,我们试下登陆并拿评论数据。
【RSA2】学习案例:新浪微博评论以及登陆
成功。
post以后返回的数据中
【RSA2】学习案例:新浪微博评论以及登陆
只有当retcode值为“0”的时候,才是登陆成功的。
下一个学习案例是美团美食,敬请期待。

声明:此案例仅供学习,请勿做非法用途!如若缩写内容侵权,请联系作者。