Python逆向之 eval 函数解析,看着一篇就会了,案例掌房【4】

举报
梦想橡皮擦 发表于 2022/08/04 11:31:30 2022/08/04
【摘要】 ⛳️ 实战场景本篇博客要盘的目标站点是【掌房买好房】登录页加密逻辑,提前访问 http://eip.chanfine.com/login.jsp 做一下接口分析。随机写入一个账号和密码,测试加密接口。账号:15012341234密码:123456通过开发者工具查看到接口参数如下所示。请求网址: http://eip.chanfine.com/j_acegi_security_check请求...

⛳️ 实战场景

本篇博客要盘的目标站点是【掌房买好房】登录页加密逻辑,提前访问 http://eip.chanfine.com/login.jsp 做一下接口分析。

随机写入一个账号和密码,测试加密接口。

  • 账号:15012341234
  • 密码:123456

通过开发者工具查看到接口参数如下所示。

其中加密位置呈现如下内容。

  • j_username: 15012341234
  • j_password: 䐵匠䴵 N3IRFNdustKHXjJ5PDrZIQ==
  • j_redirectto:

其中比较重要的就是 j_password,我们要解析的位置也在这里。

⛳️ 加密参数寻找过程

直接全局搜索关键字 j_password 即可查询对应值。

直接定位到检索结果中的 desEncrypt 函数位置,得到下述内容。

鼠标移动到加密函数位置,发现出现 VM 相关内容,这里就可以初步猜测其使用的是 eval 函数加密。

直接跳转到对应代码部分,其实已经得到了相关逻辑,参考着下述代码编写 Python 代码就可以完成任务,但这与我们一开始学习 eval 逆向相违背。

function desEncrypt(value, xForm, type) {
  if (_0(xForm)) {
    return value;
  } else {
    var keyObj = {};
    if (type == null || "aes" == type.toLowerCase()) {
      keyObj = SECURITYKEY.get();
      value = CryptoJS.AES.encrypt(value, CryptoJS.enc.Utf8.parse(keyObj.key), {
        iv: CryptoJS.enc.Utf8.parse(keyObj.iv),
      }).toString();
    } else {
      keyObj = SECURITYKEY.get("des");
      value = CryptoJS.DES.encrypt(value, CryptoJS.enc.Hex.parse(keyObj.key), {
        iv: CryptoJS.enc.Hex.parse(keyObj.iv),
      });
    }
    return keyObj.security + value;
  }
}

从上述代码提炼关键字 SECURITYKEY,在全局代码再次检索。

结果中发现了加密函数真实位置,并且明显的 eval 痕迹。

既然已经找到代码源头,接下来就可以找一款在线解密工具,实施解析即可。

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 685 篇原创博客

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。