声明:本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
起因
事情的起因是最近一段时间在进行JS逆向的分析,朋友给了一些站来练手。半夜无聊的时候进行逆向分析的时候刚好逆向到了这个站。然后一段操作之后发现这个站比较有意思
这期就来分享一下某大学JS逆向的过程。
逆向过程分析
首先我们还是一样的,抓取数据包进行分析
这里我们可以看到,password参数进行了加密处理。
那么我们就对password的值来进行逆向分析。
首先,搜索一下password,看看有没有能让人比较惊喜的发现。
果然,被我们发现了一些有意思的东西
果断下断点跟进调试
果然,在此处断了下来。进入encryptAES函数来看一看
发现了这个函数。他的定义方式在上面。不难发现是对应参数看一下。data是我们的明文密码。
_rds(64)+密码组成加密的明文,_p1是我们的key,_rds(16)是iv。然后_rds函数来进行分析。不难得出,_rds函数就是一个取指定位数的随机字符串的函数。
我们继续下断点跟进,来看一下IV是个值。
至此,我们基本上完成了算法的初步分析。接下来无论是对源代码进行还原还是进行算法的套库,我们都能对加密算法的分析。
#密文
arKRB0EfLRxuPZ+/w6Y/Eu8DLI2TYaWnNmrPx6MP4hCs6f0k5Cl7qT0e9imNECcAQJq+Sk7RGD4ZqkDidAaKoCN+VeXUUAur5HvpAxTnYXU=
key=Dh3S7ciytLH0HsVG
iv=BhKeDZH7RpEybtTK
即可进行解密。
彩蛋
看起来一切都是这么自然,而且很简单,一个AES的加密。没有太大的难点。但是有个问题我却思考了半天
根据我对多个网站的逆向分析得到的经验来说。因为IV是个随机的16位的数字,一般来说,IV是需要传递给服务器,才能用来解密。毕竟AES是对称算法,服务器拿到key和IV之后才能解密获取传输的明文,然后对数据进行验证。
但是我们通过对数据包进行分析发现,没有任何地方把IV传递给服务端。从他AES定义的位置也可以看出一些端倪。一般来说,如果是动态的IV,首先要用一个变量来接收他,然后再传入AES定义,之后再把iv值传递给服务器端。而某大学选择直接用_rds(16)来进行传参。意味着他没有将iv值传递给服务器。那么我就很好奇,服务器端是如何解密的。
后来,经过朋友的点醒,测试了一下,IV值随便给都可以进行解密。
总结
这个站有点奇怪,因为iv从我们传参的时候可以发现,iv就是随机数,所以iv不管是啥,我们最后的密文都能解密,只要保证key准确即可!(可能平台开发者故意迷惑人,或者是学生写的吧,哈哈)
再次声明
声明: 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!