flt 发表于 2023-7-30 23:15

对某实验网页VIP及购买检测的分析

本帖最后由 flt 于 2023-7-31 12:47 编辑

# 总体分析

在该网站中,部分资源要求vip
!(https://s1.ax1x.com/2023/07/30/pPpT8eg.png)

# 入口vip

点击资源后弹出如上图vip弹窗,且没有进一步操作。
进过对同源站点某功能分析,确定该网站vip限制关键词为isvip。
该公司网站公用一个检测js,其中一个更新数据的函数
```js
case 7:
    // .....
    return i = b.Z.getGradePid(u),
      o = l.vip_info,
      p = o.vip === 1,
      c.next = 17,
      a({
      type: "updateState",
      payload: {
            isVip: p,
            gradePid: i
      }
      });
```
注意`payload`中`isvip`数据,强制设为`1`后突破第一层。用devtool替换后刷新即可。
PS:详细怎么得到`isvip`的过程是几个月前做的,现在忘了。

# 跳转支付

该网页在点击资源后加载时再次检测vip,并且快速跳转到支付页面。
由于跳转太快,相关代码无法保留,禁用js后整个网站无法运行。

## 阻断跳转

尝试抓包,逐个分析支付相关请求发出前的数据包。

!(https://picshack.net/ib/UMTJLLIQrR.png)

其中`/biologyres/html/gz/**config/conf.json`返回为:

```json
{
"pid": "**********",
"loginAuth": "https://storage-backend.******.com/passport/v5/login/check",
"authAction": {
    "notLogin": { "redirectURL": "https://passport.******.com/?return_url=" },
    "notVip": { "redirectURL": "http://www.******.com/buy.html" }
},
"tokenAuth": "https://resourceapi.******.com/api/v1/vip/info",
"baseUrl": ""
}
```

尝试将这个包恒定返回500,js运行中断在加载页面。
虽然没有跳转,但是依旧没有正常运行

## 跳过跳转

这时在devtool中分析发出的堆栈,排除请求api,找到一段可以代码:
![堆栈](https://picshack.net/ib/e3CysOVahv.png)
```js
function r() {
    $.getJSON("**config/conf.json", function(e) {
      window.config = e,
      window.resUrl = window.config.baseUrl && "null" != window.config.baseUrl ? window.config.baseUrl : "",
      "E" == window.config.pid && (window.grade = 1),
      a()
    })
}
```

其上一段匿名函数为

```js
n ? e && e() : console.log("***************")
```

(其中`e()`就是上文的`r()`)
下一段就是请求api,唯一确定相关代码位置。
观察到`a()`是唯一未知有可能导致跳转,动态调试找到代码:

```js
function a() {
    if ((0,
    l.default)() || A(),
    /^http:\/\/127\.0\.0\.1/.test(window.location.href))
      try {
            if (window.top.NBUtil && !0 === window.top.NBUtil.isNWApp)
                return E = !0,
                void o(!0)
      } catch (e) {}
    M(courseID) ? c() : f().then(function(e) {
      e.login ? e.vip ? c() : _(window.config.authAction.notVip.redirectURL + "?personal=1&productId=" + (window.grade + 2)) : _("" + window.config.authAction.notLogin.redirectURL + encodeURIComponent(window.top.location.href))
    })
}
```

注意到`e.vip`,加`debugger`和`console.log(e)`,确定e的形式(这里注意要关闭自动回复,否则代码将在上方报错中断):

```js
{
    "login": true,
    "vip": false
}
```

将`vip`强制改为`true`刷新即可通过。

flt 发表于 2023-7-30 23:25

求助:能麻烦谁帮忙把图片处理一下吗,各种方法试了四五遍就是不对,各个帮助也都看过了,谢谢。

flt 发表于 2023-7-31 12:41

clove 发表于 2023-7-31 11:50
如何找到函数?教程能否说明是否可以控制台修改
网站域名不能发,大概是个什么类型的网站,想去瞅瞅

vip提示是在同源网站的某功能请求关键词确认了关键词,后对所有js搜索找到的。
后者是通过对跳转`/biologyres/html/gz/**config/conf.json`资源请求函数堆栈反查找到的,具体确定方法见上文,忽略ajax请求api后找到直接对请求结果处理的函数,依次找到相关函数。

实验模拟相关,再具体怕侵权了。

Hmily 发表于 2023-7-31 11:17

flt 发表于 2023-7-30 23:25
求助:能麻烦谁帮忙把图片处理一下吗,各种方法试了四五遍就是不对,各个帮助也都看过了,谢谢。

如果你用网络图片,直接用markdown的语句就行了,如果你直接上传论坛,用论坛的插入方式,帮助那演示的就是https://www.52pojie.cn/misc.php?mod=faq&action=faq&id=29&messageid=36

clove 发表于 2023-7-31 11:50

如何找到函数?教程能否说明是否可以控制台修改
网站域名不能发,大概是个什么类型的网站,想去瞅瞅

Speaclie 发表于 2023-7-31 18:35

大佬,需要其他的软件吧?先学习学习

homehome 发表于 2023-7-31 19:17

这个网站似乎见过,把楼主的方式保存一下,以便再次遇到来调试。谢谢楼主

fkegah 发表于 2023-7-31 19:21

学习了。谢谢楼主

clove 发表于 2023-8-1 09:29

flt 发表于 2023-7-31 12:41
vip提示是在同源网站的某功能请求关键词确认了关键词,后对所有js搜索找到的。
后者是通过对跳转`/biolo ...

请问在浏览器控制台如何直接修改文中描述的函数值
像这种藏起来的函数一般无法直接调用,总不能没事就断点

bohong65 发表于 2023-8-1 10:26

动态调试是浏览器下断点吗?总感觉不方便,有没有什么推荐的工具?
页: [1] 2 3
查看完整版本: 对某实验网页VIP及购买检测的分析