声明
本文章中所有内容仅供学习交流使用,不得用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关。
若擅自使用本文讲解的技术而导致的任何意外,作者均不负责。文中若有侵权内容,请立即联系作者删除!
〇:友情提示
- 本文章已在微信公众号【逆向学习日记】发布,若在【优快云】中无法全部查看,可以直接点击【js逆向–某上爬刷题平台系列-topic4(脱敏版)】查看。
- 在微信公众号【逆向学习日记】也可以阅读更多文章。
- 感谢关注微信公众号和阅读文章的朋友!
Ⅰ:目标
- 网址:aHR0cHM6Ly93d3cuZGVtby5jb20vcHJvYmxlbS1kZXRhaWwvNC8=
- 目标:正确答案/最终总数
Ⅱ:抓包分析
-
首先我们通过抓包分析,观察请求头,请求参数,响应体以及调用栈
-
通过观察可以知道请求参数sign和_ts需要知道算法的,我们直接通过调用栈方式去查找,进入最后一层调用栈的代码打上断点并重新请求接口。
-
可以看到程序停在断点处,并观察右边的本地作用域可以发现我们需要的参数已经生成,同时向上观察可以看到params的位置。
-
可以看到_ts=timestamp;而timestamp是获取当前时间戳得到的。sign=window.token;通过代码可以知道window.token是window.md5算法得到的,传入了 “tuling”+时间戳+页码 拼接的字符串。此时我们需要判断window.md5是不是标准的MD5算法,可以在控制台测试,此时我们需要把断点停止第87行处,重新请求接口,并测试。
-
可以看到window.md5是标准的MD5算法,并没有进行任何魔改。此时我们可以编写python代码得到最终的结果,并进行验证。
-
可以看到我们的答案是没问题的,说明程序算法无误,这里就彻底搞定。当然可能有人会觉得为什么看到window.md5就是认为是MD5算法呢?这里我们可以进入window.md5根据,直到看到一些有特点的数字。我们将它们转成16进制。
-
这些就是MD5和SHA1的魔术字,但是SHA1是6位魔术字,这里只有5位。
Ⅱ:总结
目前而言,本题还是很简单的,对于大佬来说不值一提,写这类文章主要是想给入行逆向工程师的阅读的,希望大佬们阅读之后,不要介意哈。需要具体调试,公众号【逆向学习日记】回复【某上爬topic4】获取地址。