在做爬虫登录和渗透测试挖洞JS逆向的时候,除了一些简单的爬取或者传参,不需要设置太过复杂的参数构造,但是大多数情况下一些网站的用户名或者密码都会在前端进行一次加密,然后传输到后端进行登录,这时候我们可以选择对前端页面登录方式进行逆向分析。
注意:本篇文章主要是讲解在登录时对JS的逆向分析,当然文章中的一些方法,不仅仅是局限与登录调试。
说到逆向,很多人会想,不会要反编译什么的高级操作吧!事实上,前端的逆向通俗来说就是在浏览器的调试器中,对存在的前端代码(这里的前端代码包括html、js、css)进行分析,通过分析其逻辑获取其中的路由、加密方式、敏感信息泄露等。在前端开发中,前端语言之间的关系类似下面这种情况。
语言 | 比较 |
---|---|
Html |
人类的骨架 |
JavaScript |
人类身体各部分之间产生的行为 |
CSS |
人类的外形面貌 |
可以看出,前端代码的灵活性主要是由JavaScript进行实现的,所以一般来说对前端进行逆向分析,就是对JavaScript进行逆向分析。接着我们需要熟悉以下几个点:
-
首先我们需要明确前端的加密一定是在JavaScript语言中,所以对前端页面的逆向分析一般是对JavaScript的逆向分析
-
在浏览器中,提供了两个很好的功能,即:控制台(Console)和调试器(Sources),这两个功能进行在线的Javascript逆向时非常有用,控制台(Console)可以事实运行Javascript的代码,而调试器(Sources)可以快速搜索代码和进行断点调试
-
在进行登录页面的Javascript逆向分析时,我们一般都是通过分析提交的登录参数或者加解密关键字为切入点,需要确认网站的用户名密码是否加密,如果加密,同一个密码提交后是否改变,以及是否随用户名改变、验证码的变化规律等(需要根据实际情况判断)
02
关键破局
加密函数定位
一般我们要想找到加密的函数,有三种方法:
-
通过页面对使用的方法进行追溯和跟踪
-
使用关键字进行搜索(推荐)
-
通过XHR断点进行调试(推荐)
2.1 通过页面对使用的方法进行追溯和跟踪
当我们对登录页面进行逆向时,我们可以通过页面中的表单提交确认调用的javascript
函数,例如下面函数中的loginByPhoneAndPwd
:
接着在javascript
代码中搜索该方法的名字,可以发现方法中存在pwd密码关键字并且进行了加密: