网站是:aHR0cHM6Ly93d3cuZmVuZy5jb20v
话说这个网站在过年前使用了aes算法,当然过年后也是aes,但就是把秘钥换了,换成更需要解密一段字符串,然后获得秘钥,最后请求时候再去用这个秘钥加密,并且最后发现秘钥和偏移是一样的。
- 先来看看它的加密参数吧:
X-Request-Id
这个参数当然用全局搜索大法可以定位出来,如图:
在 r = He(data)
打上断点,这里是加密的地方,可以继续追踪康康。
- 追踪到这里,一目了然了吧,但是有个问题,这里没有秘钥,放到
l
上也是wordarray,l是秘钥,但是经过了处理,那就可以直接把l处理的方法打上debugger,但是发现调试的时候并不会进到这个断点,原因是在于网页加载的时候,秘钥已经完成初始化了。 - 这里有个很简单的方法,就可以把秘钥打印出来,hook或者拦截改js文件,由于不会js的hook就拦截改了它的js文件,直接就吐出来了。
l = r.enc.Utf8.parse(o)
这个是它的秘钥,o
通过parse
这个方法完成初始化的,那就直接找到它,拦截加入debugger。- 打开charlse(可以用fd,比较喜欢charlse),找到这个js,打断点
深度刷新该网站,进入响应,然后改就可以了,charlse会帮你吧js格式化好的。
- 成功进入debugger;
- 成功打印出来秘钥
但是为甚有两个?这个其实秘钥和偏移是一样的,剩下就猜一猜是哪个就行了,也可以尝试把那个正确的debug出来,挺简单的,多点耐心就好了。
总结一下:
js逆向一般来说不太难,一般网站用全局搜索大法+调试就可以破解,当然瑞数这种需要很深的功底+足够的耐心,一般人就放弃吧,我就是一般人。。。。
最后祝大家新年快乐,爬虫路上越来越牛逼,还希望疫情早点结束,今年被困在家里了!!!