对某实验网页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`刷新即可通过。 求助:能麻烦谁帮忙把图片处理一下吗,各种方法试了四五遍就是不对,各个帮助也都看过了,谢谢。 clove 发表于 2023-7-31 11:50
如何找到函数?教程能否说明是否可以控制台修改
网站域名不能发,大概是个什么类型的网站,想去瞅瞅
vip提示是在同源网站的某功能请求关键词确认了关键词,后对所有js搜索找到的。
后者是通过对跳转`/biologyres/html/gz/**config/conf.json`资源请求函数堆栈反查找到的,具体确定方法见上文,忽略ajax请求api后找到直接对请求结果处理的函数,依次找到相关函数。
实验模拟相关,再具体怕侵权了。 flt 发表于 2023-7-30 23:25
求助:能麻烦谁帮忙把图片处理一下吗,各种方法试了四五遍就是不对,各个帮助也都看过了,谢谢。
如果你用网络图片,直接用markdown的语句就行了,如果你直接上传论坛,用论坛的插入方式,帮助那演示的就是https://www.52pojie.cn/misc.php?mod=faq&action=faq&id=29&messageid=36 如何找到函数?教程能否说明是否可以控制台修改
网站域名不能发,大概是个什么类型的网站,想去瞅瞅 大佬,需要其他的软件吧?先学习学习 这个网站似乎见过,把楼主的方式保存一下,以便再次遇到来调试。谢谢楼主 学习了。谢谢楼主 flt 发表于 2023-7-31 12:41
vip提示是在同源网站的某功能请求关键词确认了关键词,后对所有js搜索找到的。
后者是通过对跳转`/biolo ...
请问在浏览器控制台如何直接修改文中描述的函数值
像这种藏起来的函数一般无法直接调用,总不能没事就断点 动态调试是浏览器下断点吗?总感觉不方便,有没有什么推荐的工具?