前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >澳门科技局id_token逆向案例

澳门科技局id_token逆向案例

作者头像
李玺
发布2022-03-12 13:52:38
4620
发布2022-03-12 13:52:38
举报
文章被收录于专栏:爬虫逆向案例爬虫逆向案例

本文内容澳门特别行政区经济科技发展局网站的动态cookie案例,难度适中。

案例地址:https://www.dsedt.gov.mo/zh_CN/pg_home

文章目录

接口分析

对pg_home页面发送了两次GET请求,其中访问了5个自定义的JS文件。

在这里插入图片描述
在这里插入图片描述

最后一次访问,cookies已经携带了id_token参数。

可以发现有一个gen_id_cookie的请求返回了id_token。但是请求时有4个Param参数。

在这里插入图片描述
在这里插入图片描述

经过测试,发现这些参数是动态生成的,所以说想获取id_token,就需要生成这4个参数。

接下来我们开始逆向分析。

断点调试

调试前先清空当前页面的cookie,获取开隐私窗口访问。

在这里插入图片描述
在这里插入图片描述

刚开始全局搜素定位没找到,堆栈进不去, 那么在XHR/Fetch中添加断点。

在这里插入图片描述
在这里插入图片描述

删除cookie,刷新页面。成功进入debugger。 此时请求中已经携带了这4个参数,说明断点时参数已经生成。

在这里插入图片描述
在这里插入图片描述

所以我们要往之前的步骤中调试。

在这里插入图片描述
在这里插入图片描述

倒退几步之后,可以看到进入了自定义的JS中。

在这里插入图片描述
在这里插入图片描述

这里的几个\x\x,经过转换后可以发现正是我们要找的参数。

在这里插入图片描述
在这里插入图片描述

定位到之后,就可以开始模拟生成。

模拟生成

最简单的方法是把代码扣出来,然后一点一点补全上下文环境,但是比较耗时。

在这里插入图片描述
在这里插入图片描述

sha256

在这里插入图片描述
在这里插入图片描述

Fingerprint2

在这里插入图片描述
在这里插入图片描述

getUserIP

在这里插入图片描述
在这里插入图片描述

经过一阵分析,发现这几个自定义的JS都需要使用,没有多余的代码。

那么把所有JS代码都复制出来,复制到本地之后继续分析参数生成。

补环境这块不知道怎么描述比较好,一般是缺啥补啥,但是也要注意检测点。大家继续往下看吧。

注意

_0x29c9[33] 是requestIdleCallback。 window.requestIdleCallback 方法是插入一个函数,这个函数将在浏览器空闲时期被调用。这段对我们本地执行没有意义,所以删除后自行调用fingerprintReport即可。

在这里插入图片描述
在这里插入图片描述

s.min.js 文件返回的 _0xe1a0xc6, 是后续要使用的Fingerprint2。 所以在闭包函数中让 Fingerprint2 = _0xe1a0xc6;

在这里插入图片描述
在这里插入图片描述

auth_token

auth_token获取比较简单,初次访问网站会返回一段script代码,可以从中提取auth_token。

在这里插入图片描述
在这里插入图片描述

murmur

代码语言:javascript
复制
var murmur = Fingerprint2['x64hash128'](jQuery['map'](_0x5ed5x3, function (_0x5ed5x5) {
      return _0x5ed5x5[_0x29c9[1]];
    })['join'](), 31);

调用方法:Fingerprint2.x64hash128

第一个参数:jQuery[‘map’](_0x5ed5x3, function (_0x5ed5x5) {return _0x5ed5x5[_0x29c9[1]];})[‘join’]() 第二个参数:31

在这里插入图片描述
在这里插入图片描述

_0x5ed5x3是长度为28的数组,

把第一个参数优化一下: jQuery[‘map’](_0x5ed5x3, function(x) {return x[‘value’]})[‘join’]()

这段的意思就是从_0x5ed5x3中把value值拿出来拼接。

在这里插入图片描述
在这里插入图片描述

我感觉参数一 可以固定,但目前不确定网站是否会对这些值做检测。 如果后面被限制了,可以修改参数中的一些值进行测试。

本地执行代码,生成生成murmur。

在这里插入图片描述
在这里插入图片描述

h

已知 h 是 headless

在这里插入图片描述
在这里插入图片描述

headless是把auth_token处理后,再sha256加密得出的

在这里插入图片描述
在这里插入图片描述

需要注意的是,这里有一些检测点的。

在这里插入图片描述
在这里插入图片描述

比如这些常见的webdriver、plugins、languages等。 在代码中的意思是,如果webdriver存在,没有浏览器插件plugins、languages为空,则被检测到。 所以这些东西,需要我们自己去补上。

localip

localip 是 getUserIP的参数二中 function 的参数。

在这里插入图片描述
在这里插入图片描述

到getUserIP中看一下这段代码。

在这里插入图片描述
在这里插入图片描述

先判断是不是移动设备或者非主流浏览器,是则 n(0.0.0.0) 如果是正常浏览器则在本地创建一个RTCPeerConnection,然后取出和服务器连接的address,n(address)

那这个地方该怎么获取localip,可以直接以移动设备的UA访问让localip固定为0.0.0.0。 或者手动复制一个网页端创建的localip,因为我并不知道如何在本地创建RTCPeerConnection。 所以最好就按 0.0.0.0吧。

在这里插入图片描述
在这里插入图片描述

4个参数的生成已经分析完毕,大家自己按步骤做一遍吧。

最后发送GET请求获取response中返回的id_token即可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 接口分析
  • 断点调试
  • 模拟生成
    • 注意
      • auth_token
        • murmur
          • h
            • localip
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档