【首发】Python+JS逆向哪里多?必然是登录逻辑,投资界登录pwd参数解析

153 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第21天,点击查看活动详情

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

⛳️ 本次逆向实战操作

最近的几篇博客一直在围绕 JS 反爬进行编制,在这里领域中,登录的密码加密也是很大一块市场,接下来我们会使用几篇博客,系统的研究一下各种奇怪的加密姿势。

  • 本次案例目标站点名称:5riF56eR5pWw5o2u(投资界)Base64 加密;
  • 目标站点:https%3A%2F%2Fuser.pedaily.cn%2Flogin.aspx,(URL 加密)。

登录页面非常简单,如下所示:

在这里插入图片描述

由于登录操作之后,页面会产生跳转,对于开发者工具来说,不易直接抓取请求数据,所以我们采用如下方式设置断点。

启动开发者工具,使用标签选择器,点击登录按钮,然后在面板右侧切换到事件绑定器,找到单击事件

在这里插入图片描述

跳转到对应的 JS 内部,添加断点,核心代码就在下图红框所示区域。

在这里插入图片描述

接下来可以进行第一次跳转(请提前注册一个账号),等待断点停住。

在这里插入图片描述

由于代码未混淆,可以直接逐步调试,查看 PWD 参数是在哪里进行的加密。

本案例的请求头如下所示,其中仅 pwd 参数有加密嫌疑

逐步调试之后,很容易发现加密逻辑,代码如下所示:

在这里插入图片描述

绿色框即为加密逻辑,我们先搁置一下,因为发现了另一种打断点的形式。在代码中发现一个 JS 函数 .val(),这是 jQuery 中更改 input 值的函数,基于此,我们还可以添加一个 DOM 属性断点。

DOM 断点添加到一个 id=pwd 的元素上,Elements 如下所示:

<div class="form-group has-error">
<input type="password" autocomplete="off" id="password" data-rules="l:{6,15}:密码长度为6到15个字符" class="form-control" placeholder="密码">
<input type="hidden" value="" id="pwd" name="pwd">
<span class="error-info">密码长度为6到15个字符</span></div>

这其中有一个隐藏域标签,即 <input type="hidden" value="" id="pwd" name="pwd">,该标签用于记录加密之后的密码值。

在标签上右键选择添加中断条件,如下所示。

在这里插入图片描述

当出现位置 3 处的蓝色圆点,表示断点添加成功,也可以在右侧 DOM 断点选项卡查看。

在这里插入图片描述

登录时发现属性暂停断点被触发之后,开发者工具呈现的状态如下所示:

在这里插入图片描述

此时在调用堆栈上可以快速的定位到 beforesubmit 函数,也可以发现如下代码

$("#form_login #pwd").val(hex_sha1($("#form_login #password").val()));

找到加密逻辑之后的操作就非常简单了,只需要将 hex_sha1 加密翻译成 Python 代码即可。

import hashlib

pwd = "你的密码"
hex_sha1 = hashlib.sha1(pwd.encode("utf-8")).hexdigest()
print("sha1加密前 :", pwd)
print("sha1加密后 :", hex_sha1 )

再次查阅请求会发现 pwd 进行了一步大写转换,这个步骤在 Python 里面也是一键实现的。

在这里插入图片描述

写在后面

在查询请求的时候,发现请求地址是 handler.ashx,还有 login.aspx,竟然是熟悉的 NET 接口逻辑,在多年以前,我也是写 ASP.NET 出身的呢~

在这里插入图片描述

📣📣📣📣📣📣 右下角有个大拇指,点赞的帅气加倍