渗透测试-进阶

渗透测试-进阶

前言自己本身是一个学习两年网络安全的小白师傅,想想两年来都没有系统的学习过,所以将自己的理解与相关的课程做一个结合,以文字+图片的形式呈现给大家。

学习内容【基础入门】第63天:JS应用&算法逆向&三重断点调试&调用堆栈&BP插件发包&安全结合

学习目录1.如何找到加密算法

2.如何逆向加密算法

3.真实案例演示

4.补充

正式开始知识点一:如何找到加密算法首先我们需要认识一个F12的面板。

通过快捷键或者F12都可以快速的进入到这个面板。(这里用的是谷歌,为什么不用其他的浏览器呢?因为其他的我没用明白,每个浏览器按键不同~)

我个人是比较喜欢将停靠侧放在下面的。

因为这样看到的信息最多,也不会遮挡你的页面。

接下来我们需要认识三个东西,作用域,调用堆栈,XHR断点。

不着急,我们结合真实案例来讲讲:

首先点击网络,然后筛选,你想看的数据包

一般数据包都是看这个即可,当然还是建议全部看的,因为有些请求并不是xhr

主要就看三个,标头,荷载,响应。他们三就是:请求头,请求正文、响应包

随便输入一个电话号码以及密码

可以看到,不管是手机号还是密码,都被加密了。这导致的就是这个登录口你没法去使用账号密码爆破。

那怎么解决这个加密呢?最简单的情况就是,他使用了md5加密或者base64加密。这个我们人人都会,直接找个在线网站破解就好了。

但这个网站显然不是这两种的任何一种加密方式(不信可以去试试)

那怎么办?怎么找?有没有简单易上手的方法?

有的有的,先教一种门槛较低的方式,也是我个人觉得最好用的方式。但是教之前我们还需要理解登录框的数据提交逻辑。

那怎么办?怎么找?有没有简单易上手的方法?

有的有的,先教一种门槛较低的方式,也是我个人觉得最好用的方式。但是教之前我们还需要理解登录框的数据提交逻辑

引用小迪:

怎么理解?简单来说,客户端:就是我们自己。服务端:就是网页

我们输入账号密码-> 浏览器接受到我们的账号密码-> 根据js进行加密-> 发送到对方的服务器(网页)

服务器接收数据-> 对我们的数据进行解密-> 判断我们的数据解密后是否正常-> 正常就返回正常结果(否则返回报错)

那么我们需要寻找的是什么呢?我们需要寻找的是:“根据js进行加密-> 发送到对方的服务器(网页)”之间的代码。能理解吧,只要我们在它发送到对方服务器之前拦住它,不就可以截获到它是如何加密的吗?

怎么寻找呢?直接搜接口名字:

那么这里就是搜/Vip/LoginResult

右键这个top,然后点击在所有文件中搜索。如果你在下面区域右键(cf.aliyun.com)的话,就是指定域名,会导致你搜索的JS范围不全。

这个功能就是JS代码的全局搜索功能。

是不是就看到了这里的接口,那么就可以给他打上断点。

在这里进行右键

这样就成功添加了,这个时候我们再点击一下登录试试。

是不是就在这里停下来了,这里的代码是什么意思?ajax其实就是提交数据的函数,那么我们一开始需要找的函数是哪里?

根据js进行加密-> 发送到对方的服务器(网页),那么我们在他提交数据之前打上一个断点,不就可以观察到,它是如何加密数据的吗?

所以现在我们应该向上看,还是向下看?(思考后再看下面的图片)

当然是向上看啊,都说了是之间了~

通过这里查看,原文账号密码是不是有了

那么下面是什么意思呢?看不懂?交给AI。(其实看注释大家也能猜到在干什么吧~)

这行的关键是哪里?encrypt.encrypt(numMobile):调用加密对象encrypt的方法,对手机号进行加密(可能是AES/RSA等算法)。

那接下来怎么办,当然是验证encrypt.encrypt(numMobile)是不是一个加密的算法,numMobile在前面看到了var numMobile = $("#numMobile").val();

那么它其实就只是在做一个声明,numMobile=手机号

知识点二:如何逆向加密算法直接去控制台试试:

有些时候会提示没有声明:

那就全局搜索encrypt,你看这里是不是就有一个var,这就是声明

然后继续这样做就好了

你看,这个加密格式,是不是一模一样。我们是不是就找到了它的加密函数。

那么之后我们要怎么做?是不是只需要将13717045566替换为我们的字典,就可以进行一个正常的爆破了?

主播主播,我不会啊,这要怎么替换?别急,下面会讲,我们得先了解完各个方法。

懂了第一个方法,我们还有第二方法:调用堆栈

这有一个启动器,这里写的是请求调用堆栈。那么看这个的时候,需要注意一个细节:从下往上看,而不是从上往下看。

最下面那个是第一个执行的,最上那个是最后一个执行的。

懂了执行顺序以后,我们就需要寻找执行的方法了。观察调用栈名,你看ajax,我们前面提到过,是提交数据的函数名。Login一看就是登录的函数名,那么我们点击一下Login试试看。

就会成功的发生跳转:

然后我们再按照刚刚的方法进行打断点,是不是就可以找到了加密逻辑了?

知识点三:逆向算法,字典爆破,真实案例接下来还有2种方法:

但另外两种方法将是补充,我们现在学习了,如何找到加密的逻辑。那么接下来应该做什么呢?找到加密的函数,以及利用加密的函数进行解密。

怎么做?

一样的,首先添加断点。然后呢,选择我们加密的函数

鼠标的光标放到选中的函数上:

那么这里就有详细的函数位置了:

点击后会进行跳转:

这里就跳转到函数的位置了,那么为什么说它是加密函数呢?

我们滑动到最下面(文章发布时间是有效的)

看到这个JSEncrypt这个没有,看看之前encrypt是怎么声明的:

然后进行调用:

那么所以我们要调动这个加密函数,是不是其实很简单。

首先将这段内容

全选复制,然后去到一个js的在线网站,或者你们有js环境可以在本地复现:

https://www.wetools.com/js-run

然后学习它的声明方式,是不是就可以成功的对自己的字典进行加密了呢?

什么你说不会?

那我教你一个最简单的方式:

deepseek你好,请你根据这段代码写一个脚本,能将1.txt中的每行内容都根据这个进行加密,加密公钥参数是:***

加密公钥参数在哪?

在这个声明的上面,否则会出现加密格式不一致的情况,就用不了啦。比如同样是两碗水,一碗你加酱油,一碗你加蜂蜜,味道是不同的。

那么代码里那里有用这个公钥呢?

所以发现刚刚的演示的问题没有。刚刚演示没有引用公钥,但格式看起来是不是一样的?

所以,一定要提供正确的公钥,也是逆向算法中很重要的一步,一般都会在前端的js里,因为前端加密嘛

所以正确的演示应该是:

第二种方式呢?就是使用BP插件的一个方式了:

要准备两个东西:

1.js环境

2.本地插件

首先是js环境:https://phantomjs.org/download.html

下载好后配置环境变量:

然后打开cmd,输入:phantomjs

这样就算是成功了

然后下载bp的插件:https://github.com/c0ny1/jsEncrypter

然后进行导入:

选择jar文件点击确定即可。

这样就ok了,然后打开你解压的插件的目录:

找到这个文件打开它:

一步是加密算法的js脚本,一步是处理函数:

怎么做?很简单的啦,我们前面不是找到了一个加密算法的js文件嘛?直接另存为:

存储到你下载插件的那个文件夹

这样就引用成功啦,那怎么编写调用加密函数进行的代码呢?

保存,以后呢,就要运行了:

你要在目录上面输入cmd

确保你打开的文件夹,是你插件下载的文件夹。

然后输入命令phantomjs phantomjs_server.js

成功运行了,打开BP,点击连接测试:

这样就成功了,其实到这一步你在复制到字典了就好了,因为下一步容易出现插件卡死的情况……

但其实也相当麻烦了,不如第一种方法,让AI给你写一个加密的脚本。

然后继续,找到数据包

选择好后开始攻击:

你看这样是不是就加密了?

OK到这里,我们就完成了!!!

恭喜你,学会了一种最简单的JS算法加密逆向的方式方法!!!

知识点四:补充首先补充多两种找到加密算法逻辑的方法:

方法一:标签断点法

这里也找到了一个可以用的案例,之前申通那个登录案例就不可以用了(不信去试试)

https://account.hpc.sjtu.edu.cn/#/login

打开F12,先点击1,再将鼠标放置到2

然后右键你选中的这个“登录”的标签

将子树修改,和属性修改都勾选上。然后我们随便输入一个账号密码点击登录

就成功断下来了。

但问题就出在这里,即使断下来了,我也没法找到它的加密算法。但在小迪视频里面它是找到了加密算法,应该是时间过于久远了,网站的前端做了更改的结果。这里我也没有在网上找到较好的案例,所以就只是做一个补充,并不能确定是否可以用。

第二个方法:XHR断点法

使用这个方法的条件是:是否为xhr请求

这里就是xhr请求,符合条件。怎么做呢?比如你想找到这个登录口的函数方法,你就可以去复制它的接口。

Vip/LoginResult就是接口。复制以后呢,就点击源代码/来源

要选择top,而不是下面,一定要选择top

添加这个接口,然后我们就可以直接点击登录啦

这里就会断下来,但这种断点办法,并不会让你直接找到函数,而是需要你去发起程序(调用堆栈)里继续寻找

然后点击这个Login就好了。

这样看来是不是调用堆栈这个方式是万能的,非常的好用。

nonono,你们去做大量的复现后,一定会碰到这种情况。

比如这里,去学信网进行一个登录,你想找它的登录函数

一看,傻眼了,怎么只有发起程序链,我的跳转呢????嗯,我也不知道,只是我复现的时候遇到过这种情况,想告诉大家不要慌,因为我也不会~

总结这章主要是讲了如何去逆向一个JS加密的完整过程,案例只有一个,所以并不能涵盖绝对多数的情况,只能凑合着看,让大家从0到1,知道这个JS逆向到底应该是如何做的,第一步、第二步、第三步应该干什么。但其实后面还有很多的情况会发生,比如打不开f12,或者f12调试没有作用,等等开发做的防护,这都是会遇到的情况,只能在后期多多学习,多多加油。最后,祝大家天天开心、快快乐乐。

🌸 相关推荐

收藏|聪明人都在用的7大高效背单词法,你知道几个?
完美365体育app下载安装

收藏|聪明人都在用的7大高效背单词法,你知道几个?

📅 07-20 👀 4022
atm现金存款也是24小时到账吗?atm存钱多久到账?一文知晓
完美365体育app下载安装

atm现金存款也是24小时到账吗?atm存钱多久到账?一文知晓

📅 07-18 👀 8483
正常的阴茎形状是什么样的
365bet娱乐场网址

正常的阴茎形状是什么样的

📅 07-10 👀 8745