项目地址:aHR0cDovL2hvdGVsLmVsb25nLmNvbS85MjYyODY0OS8/aXNzdWd0cmFjZT0yI3Jldmlldw==
观前提示:
本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除
加密点定位
首先当然是打开网站刷新找到code加密位置
先XHR打上断点 然后刷新
断下来后就一步一步堆栈向上找code生成点
不费吹灰之力就找到了code的生成位置了
分析
重新打上断点 分析一下getCheckCodeByType
可以看到传入一个俩个值
前者为超长的文本 看不懂
后者为固定的"comment"
让我们全局找找这个超长的密文是否为返回值
结果如图可见 是返回的 perfect 那剩下的关注点就只有这个函数了
进去这个函数全部复制下来 补上参数 调试一下
发现没有定义window 补上就行了 接着再运行一次
奇怪 没有报错 却返回-99 事有蹊跷!
打上debugger 调试运行看看!
原来如此 他是在try里面运行的 如果有错误就会被抛出返回-99 这可不行
很简单 我们把try去掉不就行了
改完后运行看看
报了一个pageController.detailRequest.hotelIDs 未找到
这好办 直接去网页拿这个对象的值
然后补上就行了
var pageController={ detailRequest:{ hotelIDs:"92628649" } };
补完再运行一次
没有加密库? 不慌 网上大把 抄一个下来
抄完再接着运行
哦吼 去掉了try虽然不报错了 但是还是-99 那岂不是打脸!
老规矩 还是打上debugger 网页和node联调对比
到这一步为止俩边都没问题 接着下来eval 问题就出来了
网页
node
那 我们 就 可以 确定 是 这个 script 的 问题 了
从我们刚刚输出的文本来看 这个 script是一个OB混淆 上工具
什么?还有人不会? [2020-8-6]反混淆神器使用实战 敲黑板!
我就不贴上操作过程了 直接看结果
一共二百多行 一点一点慢慢看
特别关注window document navigator
很快就能看到
检测了navigator 以及 navigator下的webdriver
继续看
用document下的getElementById获取了一些值 但是 并有实质性的使用
下面只是if判断了一下 我们只需要让他返回的值不为undefined即可
你以为这就补完了吗?
通过我几次刷新发现 他检测的值还可能不一样 这就惊到我了
有点狗呀
就像我刷新了一次 检测换成了
所以 要多次尝试补完那些缺少的环境
交给你们去尝试了
运行
反正多试试几次 就能发现规律了 补完我们运行一下看看结果
完美对上了 如果对不上 你就要想想你补少了啥环境啦
[完]