目录
前言
目标网站:易班 - 登录
本篇文章只适用于学习,不做用于任何商业用途
一、抓包
先抓包,明确需要逆向的参数
第一眼看到这个密码的格式,有逆向经验的朋友应该能够直接看出是ras加密了。
简单介绍一下RAS加密算法。
RSA加密算法的安全性是基于对极大整数做因数分解的困难。
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
二、跟值
发现是xhr类型的,跟值的方法有很多,因为js文件没几个,这里我直接跟栈找值了,一般jquery的js文件不需要看,所以直接看logining这个。
一点开就是加密的位置,果然是熟悉的RSA加密算法,通常RAS加密都是分三步走
var xxx = new rsa的加密对象
xxx.setPublickey(“密钥”) #密钥一般是固定的
xxx.调用加密方法("明文")
上图我下的断点刚好对应着这三步
密钥一般是固定的,直接复制下来就可以用。已经完成百分之九十了,接下来就是扣代码然后放入本地尝试运行。
三、扣代码
进入这个方法,进来后可以很容易看出来这个js文件就是整个加密算法,个人习惯把代码复制到Notepad++里分析。
正常rsa加密代码行数应该就是2500-3000行左右,看样子是没错了。
得先自己再头部自定义一个变量,然后尾部把加密函数导出
自己简单写一个加密函数直接用应该就可以了
function getpwd(password){
var encrypt = new jiami;
encrypt.setPublicKey('-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDGPh7dMDGSN3uJnvZbmJ/6iaVY\ntnGAE8K/vAbMMzixMyL66HPYn5B7Zx0jcaoezErlVGZcbqNWxfeTcZrQUa7ovDsg\n6Kd9CTaacLRpmVYVxsnopSWUmrILAj5P4hd+fj9IeNWyeUyJBl63u4e/6uVfgr0X\n91zXg4jXDCeCt1jEAQIDAQAB\n-----END PUBLIC KEY-----\n');
return encrypt.encrypt(password);
}
最后放入本地运行看行不行得通。
navigator未定义,咱给他直接补上就好了,顺便window也给补上
大功告成。
扣除的具体代码太长了,需要的可以私聊我发。