爬虫逆向之观安(观镜WEB应用安全防护系统)

目录

个人声明

产品特征

定位cookies

补环境流程

exports检测

console重新赋值

meta标签

​编辑

压缩检测和定时器

script标签

localStorage

假值cookie

BUffer检测

解密流程


个人声明

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

此文章重在学习调试技巧。模拟参数生成。

目标网站:aHR0cHM6Ly93d3cuanptdTFoLmNvbS96YmdsL2NnZ2cvMTMuaHRt

安全产品介绍:aHR0cHM6Ly93d3cuaWRzcy1jbi5jb20vcGx1cy9saXN0MGVkYS5odG1s

前几天遇到cookie加密网站,以为是自营产品。然后搜了一下,

立马就知道了,这是一个安全产品。然后在网上搜了下爬虫攻略,发现搜不到。然后我真的菜,花了一天时间才搞出来。这应该是一个比较新型的安全产品,网上找不到攻略。然后我就写下这篇文章,记录逆向过程。我不会是全网首发的。

产品特征

请求两次

第一次报466

这几个值后面用于生成cookie

第二次成功生成

这一段是解密的内容

文本内容都是函数生成渲染的

以及cookie生成

请求第一次获取JS链接会变,JS详情内容不管JS链接变不变,每次请求详情内容都会变。

对比两次都不一样。

定位cookies

采用hook方式。

发现是这个函数执行的

所以做这个东西还是老样子,替换文件,方便联调。全扣,补环境。导出生成cookie函数。

补环境流程

运行第一次报这个错误

exports检测

在网页上

在浏览器是object

直接赋值为undefined

console重新赋值

接下来就输出不了内容了,所以在程序开始时,

先console.log赋值console就可以打印了然后就疯狂补环境了。

meta标签

就需要第一个必须值了,先写死

压缩检测和定时器

补完卡住不同,

两个原因,第一个压缩代码,第二个清空定时器,事实上这两个检测都有。

点击这个,压缩代码

javascript 复制代码
window.setTimeout = function () {
}
window.setInterval = function () {
}

再把定时器清空

接着报这个错误

这个可以在JS里用window导出然后调用,或者直接用标准库,用标准库吧,压缩加混淆的代码很难找。

javascript 复制代码
CryptoJS_idss  = require('crypto-js')

继续补环境,补到这里

script标签

返回两个script标签

给两个标签上代理,把两个script标签补上属性

返回x

在浏览器输出

事实上第一次页面返回的

补上去注意顺序

接下来

补上这两个,然后继续补环境

补到这

localStorage

事实是这个东西

补到最后发现还是补不出来,localStorage上代理或者联调都行

发现是这个方法缺失了,补上就行

然后又报cookie未定义

此cookie非彼cookie,为第一个接口响应cookie,随机字符也行

补完这个属性后就可以出值了。

假值cookie

接下来请求首页

获取js链接和meta标签的content属性

然后读取补好环境的node内容进行一一替换

运行内容

发现是个假值,假值跟真值cookie长度还不一样。

BUffer检测

仔细查了下吐环境,发现还有这个检测

BUffer在浏览器是

在Node里是

咱们也可以联调看一下

在这里设置debugger

在这里有个判断

联调,观察是什么内容

在node,是会执行这个判断的

然后对比网页

网页判断是undefined

所以就非常简单,把Buffer赋值为undefined

除以上还有这几个检测

javascript 复制代码
delete global;
delete Buffer;
delete process;
delete require;
delete module;
delete exports;
delete __filename;
delete __dirname;

留个心

顺利请求

解密流程

下断点

进入这个函数,可以直接使用这个函数

直接使用

接下来就是缺失这个

这个就是这个

可以直接补上了

然后联调补环境补几个方法,补环境过程省略。这一段先写死

补到content,然后script里的src属性和meta标签内容要一一对应,推测可能是生成密钥,或者是分段密文内容。这里面用的是AES加解密。

就可以了

然后进入这个函数

找一找是在哪里解密的

发现在这里

然后用window属性导出来,这里这个函数我格式化了,非压缩,其它都压缩了

然后封装测试

过了,这里面的传参会变。

最后封装代码

运行结果:

相关推荐
Serendipity_Carl14 分钟前
1637加盟网数据实战(数分可视化)
爬虫·python·pycharm·数据可视化·数据清洗
瑶池酒剑仙3 小时前
Libvio.link爬虫技术解析大纲
爬虫·python
喵手3 小时前
Python爬虫实战:构建 Steam 游戏数据库:requests+lxml 实战游戏列表采集与价格监控(附JSON导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集steam商店游戏列表数据·sqlite数据库存放采集数据·价格监控游戏推荐市场分析
zhengfei6114 小时前
高级网络安全爬虫/蜘蛛
爬虫
恬淡如雪4 小时前
Excel接口测试自动化实战
爬虫·python·excel
m0_663234015 小时前
Libvio.link爬虫技术全解析
爬虫
深蓝电商API5 小时前
httpx库异步爬虫实战对比aiohttp
爬虫·httpx
0思必得06 小时前
[Web自动化] 爬虫合规指南:从法律红线到安全实践
前端·爬虫·自动化·web自动化
喵手18 小时前
Python爬虫实战:针对天文历法网站(以 TimeandDate 或类似的静态历法页为例),构建高精度二十四节气天文数据采集器(附xlsx导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集天文历法网站数据·构建二十四节气天文数据
喵手19 小时前
Python爬虫实战:采集博客园 Cnblogs文章标题、发布日期、标签以及HTML正文等(附 Markdown 文档格式预览)!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·博客园文章采集·博客园文章采集转md格式