猿人学攻防赛之第九题:JS混淆、动态Cookie2

前言

    直接干···

分析

    抓包:    

题目是动态Cookie,那么重点就是cookie了。加密cookie就是这个m,应该是个时效性的cookie。

打开F12,可见一堆的debugger。直接条件断点过掉,方法有很多,参考之前的文章:网页端debugger反调试的几种对抗方式

    然后你会发现这个网站非常卡···

    这里的混淆是一个标准的sojson,版本号都没去的免费版~~

    那就先抠出来还原一下,因为这种混淆,解过两次之后,再解真的是太无脑了。。解完2000多行。我们先把一些关键的检测点处理一下。

    sojson爆破内存的一个点就是会把某段JS代码丢进去通过正则匹配非换行符的内容,如果匹配到了换行符,就通过一些方式无限调用爆破内存。因为我们格式化了代码调试,不处理是运行不出来的。直接搜索new Reg就能找到了,就是这里。

    我这里直接把他return 后面的!干掉让他返回相反的结果,直接把这个函数干了也没问题,方法很多,反正你知道了是这里怎么改都行。然后是无限debugger,他一般会把debugger放在一个函数里,通过定时器调用,也就是这里:

        干了这个定时器就行,他执行的这个函数里并没有什么实际内容

      为确保万一,搜索debugger把这几行也删了,不知道他在其他地方有没有调用这个方法。

     把整段代码扔到浏览器里执行一下,啥都没发生,cookie也没有加。

       我们大概看一下代码,好像定义了很多加密,但是没有在调用,那么调用的代码是不是可能在其他地方?

        F12全局搜索m=,发现找到了这个结果,上面的都没什么用,一些通用的JS模块,这个页面是什么?网页的原代码啊,这里就很可疑了,果断进去。

        进到格式化的代码中搜索,又什么都搜不到。这里有点奇怪了,难道我们找错了?

        Fiddler抓一下包,发现了蹊跷。

        害,你这不就跟第二题一样的套路吗,请求两次,第一次是加密JS,第二次是真正的网页代码。

        最后一行这reload都在这了,顺藤摸瓜的猜想,他是通过上面的代码设置了一些东西,然后重新加载网页得到真实页面。

        老规矩,见到这种混淆无脑解··

        解完混淆就100行,直接看见了设置cookie的地方

        虽然就100行,没什么东西了,但还是别急,依旧是上面的步骤,我们先把里面的陷阱处理掉。

        很多都是没啥子鸟用的,全是坑。观察了一下,他实际上有用的就这几行:

        我们试验一下,首先把第一段JS扔进控制台执行一下,然后:

        按他的逻辑,只要再在这个前面加上一个数字2就是最后的m值了。

        最后是所谓的动态Cookie,我们用Fiddler的重放功能多请求几次这个JS看看:

        搜索decrypt:

        再看不出来我也没办法了啊~~

总结

    第九题看起来也就是一个第二题的加强版,没什么要点。。感觉还是白给的一道题。除了8题以外,看来大敌只剩第10题了,第11题我没有报名,没进群,拿不到题目。。不过猜测也就是Crackme的难度吧。。8题个人觉得未必深度学习才能解决,到时候再看。先把JS这些题目搞掉。

推荐阅读更多精彩内容