概述
声明:本文仅限交流学习使用,请勿使用在任何非法商业活动,禁止用于非法用途。否则后果自负。如有侵权,请告知删除,谢谢!
目录
一、接口参数定位.
二、pre
三、_m_
一、接口参数定位.
接口提交表单信息分析, 通过工具请求接口, 可以得出headers里有个 pre 参数 与提交的表单中的 __m__ 参数(看这长度 32 位,我这样说你懂吧,多半是MD5)
二、pre
1. 首先我们需要解决的是headers里的pre。我当时找了一会没找到, 只好断 script 了, 一步一步慢慢断点, 发现就在源码里的第一个script 标签下, 刚开始断点到这里的时候代码是压缩的, 很好复制下来调式代码。
2. 调试代码呢最好不要格式化代码, 像这些压缩过的 JS 一般都存在 内存爆破。但是每个网站的爆破点不一定一样, 这就需要撸点头发了,秃了 自然就强大了。修改后的代码大概就长酱紫。
3.你以为调试完成结果输出跟浏览器中的js输出结果一样就完了吗? 不,, 心细的同学可以发现我本地调试的混淆JS跟 script 下的混淆JS, 说它一样吧但又不全是。我们先来看一下这串又长又粗 的变量。
4. 初步分析变量是由 base64 的加密而成的字符串组成列表, 随便拿其中一个参数看一下就知道了<(⊙﹏⊙)>, 这里我简单还原了混淆里面中的仅有的两个内存爆破代码, 附python代码; 一目了然, 无非就是对 base64 解密, 然后循环转 hes、ascii 编码, 一般这些都是储存一些什么 replace 、console、tostring、变量 等花里胡哨的功能。目的是什么呢, 就是让你多掉些人体多余毛发(开个玩笑)。
5. 剩下的就剩每次JS 善变 的问题了, 变量、函数有变, 功能总不变吧? 我相信没有这么闲的开发工程师会写这么多加密方法增加难度。即变真正有这么闲的工程师, 可能会改写加密方法, 但核心还是不变滴, 我们只需要正则 点♥? 匹配一下核心的参数, 亦或者闲麻烦直接使用selenium好吧。
7. python版代码
三、_m_
1.一步到胃, 直接来到加密核心, 32位(md5)? 大胆猜测, 懂? encrypt 又是什么妖魔鬼怪勒, 全局搜索一下。
2. 这下你是否又懂啦? 取了cookies 中 两个参数, 而且还是动态的, 兄弟萌,干他就完事了。
3. 核心的两个动态玩意就在下面了, 这列表啥意思啊? 无它, 绝壁又是转码什么的,老套路了>
4. 拿一个列表数据试试就晓得了, 这是不是很眼熟, cookies中的一小段值对吧?
5. 就剩最后一个难点了, 真的我不骗你! 这里 有两个方法: md5、sha1。既然我们前面都知道是动态的了, 这两兄弟肯定也是判定调用的, 这两个方法到底掉哪个呢? 取决与 cookies的值, 我们之前取了是不是有两个值变量 t 与 n, 取决与 t 这个值, 这个值有两种类型的数据, 至于什么时候掉哪个方法自己写了。
6. 附python半成品 _m_
兄弟萌, 我完事了, 又又又浪费半天时间。现在是TIMI时间, 下次再见啊~
最后
以上就是明理长颈鹿为你收集整理的JS逆向之去哪儿旅行 - - - 动态混淆一、接口参数定位.二、pre 三、_m_的全部内容,希望文章能够帮你解决JS逆向之去哪儿旅行 - - - 动态混淆一、接口参数定位.二、pre 三、_m_所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复