安全微课自动学习(登录JS脚本解密)


title: “安全微课自动学习(登录JS脚本解密)” date: 2020-09-12T13:23:00+08:00 lastmod: 2024-02-12T07:09:19+08:00 categories: - Web aliases: - /archives/42/


最近学校要搞新生安全微课,有80节课要完成,如果一个一个看的话大概要三四个小时吧。 但是作为祖国的花朵,不研究一下怎么能行呢? 安排!

首先是登录账号 软件有两种登录模式,一种是二维码登录,一种是账号密码登录,两种模式虽然都能达到想要的结果。

二维码登录.png账号登录.png

本来是想直接上二维码登录的,简单快速也方便大家使用,但是在抓包的时候这个引起了我的兴趣。

加密.png

居然登录有加密,那么就一定要瞧一瞧这个加密是怎么完成的。搜索关键词:“login.do”,看看有没有相关的包。 这里要提一个事情,chrome的开发者工具在之前是不能全局搜素关键词的,现在居然可以了(或许之前我不知道)。

搜索login.do.png

好家伙,就在"app.cb64b205792606ca95b3.js”文件中,而且看样子像是混淆过了。 那我们就在Sources中根据url目录找到这个文件的地址,然后把每个有关键词的地方都下一个断点。 然后进入网页中点击登录。

调试界面1.png

进入上一层后

调试界面2.png

既然看不出来加密位数,但是由于看到他有一个 alloc(16),所以猜测他密码是16位,数据块是128位。 我们来到网站上按照猜测解密试试看,首先复制提交的加密数据,然后再把“-”和“_”进行替换,提交到网站上

AES解密.png

果然成功了。

文章里看起来似乎很简单,但其实我经过了长时间的尝试,其实如果不是要研究的话,可以考虑直接把整个加密的js拉下来,然后和网页中的代码一样调用。

还有就是,我使用的在线AES加密网站,设置128位后,如果密码不到16位,就会用00进行填充,这是我尝试得出的,而且网站实际上也是用00进行填充的。

文章到这里就结束了,本来是想记录全过程的,但是实在是太复杂就懒得写了,这里算是最难的一个点吧,其他地方都是繁琐。

不过还有一些我自己遇到的坑想提一下。 关于这个验证码系统,我刚开始以为所有的时间戳都是随机生成的,没有什么实质性的作用。结果这个猜测导致了验证一直不通过。直到后来才发现原来,验证码访问传入的时间戳和登录传入的时间戳要一样,而且验证码生成的网址的时间戳如果不传入就直接报错了。所以我这里猜测了一下,结果发现了一个不太算是漏洞的漏洞,也就是验证码如果不重新访问,就可以一直用同一个验证码进行访问。也就是这个验证码就是摆设。

关于AES加密,我现在还是不太了解,只是大概知道这个是一个对称加密方式。 有括AES-ECB,AES-CBC,AES-CTR,AES-OFB,AES-CFB。这些加密模式,其中ECB是不用提供偏移量的,其他都是需要。 其中CBC模式中还存在着随机的字符,也就是同一个秘钥,同一个加密内容,生成的内容会不一样。如果有机会,还蛮想学习一下这些加密方式的原理的(虽然不一定能懂)。

另附我写的程序,源码就不放了,C#写的程序没加壳就和开源差不多:一分钟完成新生安全微课攻略

0%