记一次简单的js逆向

还是老样子,先提交一个请求登录的数据包,然后查看响应体:

一般来说都是document类型的文件,单击进去

查看载荷发现loginid字段就是我们页面对应提交的账户名,然后下面的password因该就是相对应的密码了

使用了不知名的加密手段,现在尝试进行逆向破解

复制password字段到前端的js代码里面查找变量名字,然后就是靠感觉了,最终在源代码里面top/a.alipayobjects.com/security-sdk/2.1.2/index.js下找到了相对应的加密函数:

如果在不确定的情况下,到怀疑的程序后面打上断点,进行提交数据的调试,即可判断是否找对了地方

我们可以看见上图的e.alipayEncrypt()这个函数,其实在js逆向中,Enctypt这个函数挺关键的,一般来说加密方法里面都会有这个单词,我们尝试直接到控制台输出这个方法,发现就是我们密码加密过后的数据,但是这里不一样

这是因为RSA是结合了时间戳进行加密的,然后

鼠标放到alipayEncrypt方法上,然后会出现一个小框,点击里面的超链接即可跳转到alipayEncrypt方法定义的地方,当然

还有一种就是

直接到控制台输出,然后点击回显的值也能跳转过去,

发现这个方法被包在了一个很长的方法之中,最方便的方法就是把代码全部dump下来,放到编译器里面

然后进行操作,发现这个方法体长达两千七八多行,到浏览器新开一个窗口,只需要用到控制台:

把方法体贴上去然后回车就会返回上图红色框住的,先定义一个变量然后值为实例化的 security_crypto_200_lib_rsa类

然后调用test对象的alipayEncrypt方法,发现里面需要传入三个值,回去原网页查看,传入的值分别是什么

发现这个2为第一个参数,是固定的,然后i为类似偏移量的东西,也是默认的

可以看见,e对象调用alipayEncypt的前面,还调用了一个setPubliKey(this.options.PK),这个PublicKey是RSA加密中类似于公钥的东西,少了的话是加密不了的:

上图为缺少共钥的加密结果,我们需要找到公钥,直接在控制台进行调用:

然后添加到我们新窗口的控制台中:

然后就可以进行愉快的传入参数了,直接破解

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值