分析逆向案例十七——深圳大学登录逆向(新类型,有些加密参数是通过页面源代码获取的,不同于前面有发包)

网址:aHR0cDovL25ld2F1dGhzZXJ2ZXIuc3p1LmVkdS5jbi9hdXRoc2VydmVyL2xvZ2lu

登陆页面,找到登录接口,发现登录接口是document类型,而不是xhr类型,无法跟栈分析。

 

登陆两次,发现有两个加密参数,lt这个参数也是变化的。 

 

还记得土巴兔那一次的分析吗,可以在元素中搜索authserver/login

 

找到casLoginForm关键词,再搜索

找到疑似加密位置点击进去

 

再第二个encryptAES处打上断点 

 

分析这长串代码:

这段代码定义了两个函数 _etd_etd2,它们都用于对输入的密码进行 AES 加密并将加密后的值设置到表单的 #passwordEncrypt 输入框中。如果加密失败,则直接将未加密的密码设置到该输入框中。

下面是这两个函数的详细解释:

  1. _etd 函数:
    • 参数 _p0:需要加密的密码。
    • 使用默认的加密盐(pwdDefaultEncryptSalt)对密码进行 AES 加密。
    • 将加密后的密码设置到表单 #casLoginForm#passwordEncrypt 输入框中。
    • 如果加密过程出现错误,则将未加密的密码 _p0 设置到 #passwordEncrypt 输入框中。

 

function _etd(_p0) {
    try {
        var _p2 = encryptAES(_p0, pwdDefaultEncryptSalt);
        $("#casLoginForm").find("#passwordEncrypt").val(_p2);
    } catch(e) {
        $("#casLoginForm").find("#passwordEncrypt").val(_p0);
    }
}

_etd2 函数:

  • 参数 _p0:需要加密的密码。
  • 参数 _p1:用于加密的盐值。
  • 使用传入的盐值 _p1 对密码进行 AES 加密。
  • 将加密后的密码设置到表单 #casLoginForm#passwordEncrypt 输入框中。
  • 如果加密过程出现错误,则将未加密的密码 _p0 设置到 #passwordEncrypt 输入框中。
function _etd2(_p0, _p1) {
    try {
        var _p2 = encryptAES(_p0, _p1);
        $("#casLoginForm").find("#passwordEncrypt").val(_p2);
    } catch(e) {
        $("#casLoginForm").find("#passwordEncrypt").val(_p0);
    }
}

学习新知识:

  1. casLoginForm:

    • 假设 casLoginForm 是一个 jQuery 对象,表示登录表单。
  2. find("#username"):

    • casLoginForm 表单中查找 ID 为 username 的输入框,并将其存储在 username 变量中。
  3. find("#password"):

    • casLoginForm 表单中查找 ID 为 password 的输入框,并将其存储在 password 变量中。

最终,这段代码的作用是获取表单中的用户名和密码输入框,以便后续对它们进行操作,比如读取用户输入的值、进行加密等。

var username = casLoginForm.find("#username");
var password = casLoginForm.find("#password");
  1. password.val():

    • password 是之前从表单中获取的密码输入框。
    • .val() 方法用于获取输入框中的值(即用户输入的密码)。
  2. casLoginForm.find("#pwdDefaultEncryptSalt").val():

    • casLoginForm 是登录表单的 jQuery 对象。
    • .find("#pwdDefaultEncryptSalt") 从表单中查找 ID 为 pwdDefaultEncryptSalt 的输入框。
    • .val() 方法用于获取输入框中的值(即用于加密的盐值)。
  3. _etd2 函数:

    • _etd2 函数接受两个参数:第一个参数是密码,第二个参数是用于加密的盐值。
    • 该函数会尝试使用 AES 加密密码,并将加密后的结果设置到表单中的 #passwordEncrypt 输入框中。如果加密失败,则直接将原始密码设置到 #passwordEncrypt 输入框中。

总结一下,这段代码首先获取用户输入的密码和加密盐值,然后调用 _etd2 函数对密码进行加密,并将加密后的密码设置到表单中相应的隐藏输入框内。

_etd2(password.val(), casLoginForm.find("#pwdDefaultEncryptSalt").val());

某变量.find('#某变量1) 一般是从class = 某变量1中取出值

再次点击登录,打印参数,发现果然是这个加密函数,但是又引出了_p1是怎么来的?

 

 

经过上面的分析,大致知道要在源码中去_p1,而且是搜索pwdDefaultEncryptSalt

 

顺便搜索lt,发现果然也在源码中。

 

找齐密钥和加密参数后,回到加密函数encryptAES,进入其中,

再进入_gas函数发现就是一个AES的加密。

 

这个AES需要三个参数,加密的数据_rds(64)+data(data是123456),_p1是密钥,_rds(16)是iv值。

现在就是函数_rds()不知道了。进入_rds(),发现下面代码,没有什么特别的,全部复制下面的内容即可。

总结,这个登录口加密分析:加密lt参数从源码中获得。密码经过AES加密,密钥从源码中获得,把密码和rds生成的内容结合作为最终加密数据,把rds生成的内容作为iv值 。这就是整个的加密流程,可以自己试着写代码!

学到的东西给就是从源码中获取需要的内容,有时是参数的加密值,有时是某种加密方式的密钥。联想古诗文网登录逆向,它里面也有两个加密参数是从源码中获取的。

 

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力学习各种软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值