js逆向之猿人学-反混淆刷题平台第一题(手把手

admin 147 0

链接:

http://match.yuanrenxue.com/match/1

内容分析:

这里我们来看一下第一题的内容:

js逆向之猿人学-反混淆刷题平台第一题(手把手-第1张图片-股票学习网

<

1.题目要求:获取所有机票价格的平均值。

2.接口分析: 首先我们按F12,这里会出现一个debugger。

js逆向之猿人学-反混淆刷题平台第一题(手把手-第2张图片-股票学习网

直接在第二行右键never pause here,我们可以看到如下图所示:

js逆向之猿人学-反混淆刷题平台第一题(手把手-第3张图片-股票学习网

然后点击我用红框圈起来的按钮,这就能直接过掉这里的debugger

之后我们点击进行翻页,出现了一个请求,点击这个请求

js逆向之猿人学-反混淆刷题平台第一题(手把手-第4张图片-股票学习网

这里我们能看到请求时带了两个参数,一个page(页码),一个m,这里这个m值就是本题的关键

如果有js逆向经验的,一看这个值就会有一个猜测,这个m值,"|" 前面部分可能是一个md5,后面是一个时间戳,接下来我们就分析下如何获取到这个m值。

还是在这个页面,按照下图所示一次点击。

js逆向之猿人学-反混淆刷题平台第一题(手把手-第5张图片-股票学习网

接下来我们能看到页面跳转到了如下图所示:

js逆向之猿人学-反混淆刷题平台第一题(手把手-第6张图片-股票学习网

将代码格式化一下,也就是点击我用圈起来的地方。

这里我们能看到代码是被简单混淆过了,对代码的分析不太友好,不过不用慌,将这里面的代码全部复制。然后打开这个链接:JS反混淆工具-JS混淆还原工具-猿人学JS在线反混淆。

js逆向之猿人学-反混淆刷题平台第一题(手把手-第7张图片-股票学习网

将代码复制到上面的框中,然后点击尝试解混淆,之后下面框会出现解过混淆的代码。这我们将解过混淆的代码复制出来。

js逆向之猿人学-反混淆刷题平台第一题(手把手-第8张图片-股票学习网

从上图看,我们很容易看出有一个_0x5d83a3.m 这个参数,而且格式和之前我们在请求时看到m参数格式类似,

接下来看看这个m是不是我们需要的参数,我们回到之前的页面中,也就是下图这个页面(这是格式化后的代码)。

js逆向之猿人学-反混淆刷题平台第一题(手把手-第9张图片-股票学习网

我们对比解混淆后的代码,直接在第6行和第7行打断点,有人可能会问为什么不在第5行打,因为第5行可能打不上,不过影响都不大。打完断点之后我们重新翻页,这里就直接在第6行断住了,接下来我们看一下_0x5d83a3['\x6d']这个参数(也就是解过混淆之后的_0x5d83a3.m)。把鼠标选中我框起来的部分,这里就会出现一个值,如下图所示:

js逆向之猿人学-反混淆刷题平台第一题(手把手-第10张图片-股票学习网

这里我们能看到这个值和之前请求时的m值格式一样的,所以基本能断定前面请求时的m值就是在这里生成的。

然后我们看看这个值得组成部分:

_0x57feae + '\u4e28' + _0x2268f9 / (-1 * 3483 + -9059 + 13542)

这里我们依次看看'\x6d''\u4e28'(-1 * 3483 + -9059 + 13542)这三个参数?。

整理下:

 _0x5d83a3["m"] = _0x57feae +"|" +_0x2268f9 /1000

这里就只剩下 _0x57feae 和_0x2268f9这两个参数了,我们往上看,可以发现这两个值如何得到都是有的。

 var _0x2268f9 = Date['\x70\x61\x72\x73\x65'](new Date()) + (16798545 + -72936737 + 156138192)  _0x57feae = oo0O0(_0x2268f9['\x74\x6f\x53\x74\x72' + '\x69\x6e\x67']()) + window['\x66'];

把这两个拿到刚才解混淆的位置解下混淆,得到:

var _0x2268f9 = Date["parse"](new Date()) + 100000000;_0x57feae = oo0O0(_0x2268f9["toString"]()) + window["f"];

可以很明显看出 _0x2268f9 是一个时间戳, 接下来只用分析下_0x57feae即可。

我们重新打下断点,如下图所示:

js逆向之猿人学-反混淆刷题平台第一题(手把手-第11张图片-股票学习网

还是按照刚才的方法,选中需要看的,我们会发现,oo0O0(_0x2268f9["toString"]()) 的值是空的,window["f"]的值是一串md5值,那么很明显了,我们现在只需要找到window["f"]是如何生成的,那么整个m就能出来了。从这里我们可以看到 fwindow下的,那么接下来我们有两种方式,一种是继续跟,来找到这个f是如何生成的,另一种是通过hook。

先讲讲如何继续跟值,这里先看看 oo0O0函数,将鼠标放在这个名称上,之后会出现如下图所示:

js逆向之猿人学-反混淆刷题平台第一题(手把手-第12张图片-股票学习网

直接点击,这里会直接跳转到这个函数所在的位置,如下图所示:

js逆向之猿人学-反混淆刷题平台第一题(手把手-第13张图片-股票学习网

这里由于代码的原因,无法进行格式化,所以我们需要自己复制出来。如下图所示:

js逆向之猿人学-反混淆刷题平台第一题(手把手-第14张图片-股票学习网

注意看我框出来的部分,这里就是为什么这个函数的值是一个空的,因为最后返回的是一个空。

js逆向之猿人学-反混淆刷题平台第一题(手把手-第15张图片-股票学习网

这里先传值运行一下,结果发现报错了,报错原因很简单,缺少一些参数,这里我就说快点了,代码拉上去,我们能看到如下图所示:

js逆向之猿人学-反混淆刷题平台第一题(手把手-第16张图片-股票学习网

这里缺的就是我圈起来的部分的参数,只需要补齐就好了,这些值都是固定的。

想要获得这些值很简单,直接在console面板中运行下对应的值就行了.

js逆向之猿人学-反混淆刷题平台第一题(手把手-第17张图片-股票学习网

需要补的代码(在node中运行的时候直接放最上面就好了):

window = global;window.a = "isM?RQsxrU]xtDhMbZ?Jrrd?v?xP?ii?uyp?x]????q??z}?? g°?¤ˉ???ta¥?ˉo§ˉ?·£¢32ˉ¥ ?????o????¢±????é?1?×2ó???-ó???1ü餤??é?òY??????????ìDù?e?÷????óàò??t?Táēt?????ù??????yà?ò??T??è????????????ì???????????????ü?????????????????ň??????????????????????????????ň?ū?????????ū????????ńń????????????????????????????????????????????????????????????????????????ǖ??ǎǐ???ǒ???ǒǎ?ǘ?ǐǘ????ǜǚǖ???ǒ???ǘ?ǔ?ǚǖ??ǐ????????????????ǚ???????ǐǘ???ǜ??????ǜǜ??????????????????????????????????????????????????????????????????????????????ɑ??????????ɑ???????????????????????????????????????????????????????????????????????????????????????????????ˉ???ˋ???ˇ???????˙?????????ˉ??ˊ˙???ˉ???????????????????ˋ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Ζ???ΖΜ?????ΤΟ????ΗΓ??????α?????Β?κ??Ν?Ψ??νΙΝ?υΛψΔ?Ξ?Π?Σ???νχΡ?ΦΥ?Ι?ζΨΗβ??Ιθ?μ?μ?πΧ??ι?ξν?αφ????????φ?θ?θ?????ξ??????σ??ψ???????????????ПК????МВ??ИДЛ?Х????НЧЁе??Ц?УЬз?ООАЯУд?рМЁЩидлЕрХЭю?л???зТецлям?ч???ебЛ?яб??шФ??тмЧ?ч???ы??????ж???к??????р???ь??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ??? ?? ????? ??????? ??? ?  ? ??  ?       ?    ?      ?    ?                                                                                                                                                                                                       ??   ?       ?           ?  ? ?? ?? ???????????? ?????? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????"window.document = {};document.e = 'fromC';document.f = 'charCo';document.g = 'harCode';document.h = 'deAt';window.c = 5

补齐之后我们再运行一下:

js逆向之猿人学-反混淆刷题平台第一题(手把手-第18张图片-股票学习网

这里我们能发现运行之前window.f是没有值得,运行完之后就有了,很明显window.f就是在这个函数中被赋值的,不过我们不用管, 直接这样就好了。我们按它的逻辑来运行一下代码,发现m出来了。

js逆向之猿人学-反混淆刷题平台第一题(手把手-第19张图片-股票学习网

Hook方式:

首先我们直接在这个页面第一行打上断点,之后刷新页面,等到断点断住之后,在console中输入下面的hook代码:

Object.defineProperty(window, 'f', {   set: function(val) {            console.log('f的值:', val);           debugger            return val;        }    })

js逆向之猿人学-反混淆刷题平台第一题(手把手-第20张图片-股票学习网

这样就说明hook代码运行成功了,接下来我们释放断点即可。

js逆向之猿人学-反混淆刷题平台第一题(手把手-第21张图片-股票学习网

我们发现断点断住了,同时也出现了一串值,这个就是生成的f值,接下来我们找到生成这个值的地方,点击我圈住的位置,跳转之后将代码格式化,出现如下图所示:

js逆向之猿人学-反混淆刷题平台第一题(手把手-第22张图片-股票学习网

这里可以发现f是通过一串时间戳进行了一个md5操作生成的。这个时间戳就是之前_0x2268f9 这个参数通过toString()后得到的,接下来就扣代码环节了。

欢迎关注公众号:【时光python之旅】 (在这里你能学到我的所见、所闻、所思、所学)

抱歉,评论功能暂时关闭!