js逆向登录学习记录

117 阅读2分钟

声明:
本文所载内容仅限于学习交流之目的。所有抓包内容、敏感网址及数据接口均已进行脱敏处理,严禁将其用于商业或非法用途。任何因此产生的后果,作者不承担任何责任。若涉及侵权,请及时联系作者以便立即删除。

近期,笔者在学习相关知识的过程中,亦在寻找合适的网站进行实践练习。本文仅为笔者闲暇之余的知识分享,希望能对大家有所启发。

首先,启动我们的抓包工具——在这里,笔者选用的是Fiddler。当然,工具的选择因人而异,大家可以根据自己的喜好和习惯挑选最适合自己的。接下来,我们访问目标网站并进行登录操作,同时对整个过程进行抓包记录。

我们随机写一个密码登录进去,抓包尝试一下。

image.png

接下来我们看一下抓包结果

image.png

我们可以观察到,密码在传输过程中已被加密处理。显然,前端加密是通过JavaScript实现的。进一步思考,这种加密机制很可能涉及到公钥和私钥的使用。

那我们返回网页f12观察一下找一下我们登录的其他值是怎么来的。

image.png

通过观察发现,_eventId、dllt、cllt等都是死的,那我们只需要解决password和execution就可以了。 我们f12打开源代码全局搜索password

image.png

我们再接着找,顺藤摸瓜看一下加密代码;发现是aes加密,具体代码如下:

image.png

它接收两个参数,一个是加密盐一个是密码,我后面打断点发现加密盐就是图中的:

image.png

那么加密方式知道了,加密代码有了就不难了吧,到这里password的基本搞定了。

而execution 通过抓包发现它的值也是网页上的值,一模一样的。 因为笔者不会python所以用Java写的简单获取代码

public static void main(String[] args) {
    String url = "替换成要抓包的url";
    try {
        Document document = Jsoup.connect(url).get();
        Element pwdEncryptSaltElement = document.getElementById("pwdEncryptSalt");
        Element executionElement = document.getElementById("execution");
        if (pwdEncryptSaltElement != null) {
            String pwdEncryptSaltValue = pwdEncryptSaltElement.attr("value");
            String executionValue = executionElement.attr("value");
            System.out.println("pwdEncryptSalt value: " + pwdEncryptSaltValue);
            System.out.println("execution value: " + executionValue);
        }
    }catch (Exception e){
        e.printStackTrace();
    }
}