猿人学web端爬虫攻防大赛赛题第15题——备周则意怠-常见则不疑

news/2025/1/12 4:02:31/文章来源:https://www.cnblogs.com/sbhglqy/p/18521393

题目网址:https://match.yuanrenxue.cn/match/15

解题步骤

  1. 看触发的数据包。
    image
    image

  2. 有个m参数,一看就是经过处理的,我们得知道m是如何组成的。看Initiator模块。
    image

  3. 还是看request函数,往上一看就看到了m的赋值操作。
    image

  4. 打断点,触发。
    image

  5. 看下window.m()的定义。
    image

  6. 比较好理解的,t1t2就是对时间戳做相应的处理,关键是window.q函数,定位一下。
    image

  7. 定位的一头雾水,啥也没有呀。回到刚刚的地方,发现它加载了/static/match/match15/main.wasm文件,可能window.q函数在文件里面定义的。
    image

  8. 先写代码获取/static/match/match15/main.wasm文件的内容。
    这里需要利用python的第三方库:pywasm
    安装:pip install pywasm==1.0.8

    一开始安装pywasm库的时候没有指定版本,导致我的程序一直报错,后来指定版本为1.0.8后报错消失。

    import pywasmwasm_url = "https://match.yuanrenxue.cn/static/match/match15/main.wasm"
    resp1 = requests.get(wasm_url)
    with open("main.wasm", mode="wb") as file:file.write(resp1.content)
    

    wasm文件:WASM(WebAssembly)是一种为浏览器设计的二进制指令格式,它使得开发者能够以一种安全、快速和跨平台的方式在Web上运行高性能代码。 WASM 是一种编译目标,类似于机器码,但它是为Web设计的,旨在解决C、C++、Rust等编程语言在Web上运行的问题。

  9. 尝试调用wasm文件中的encode函数来完成m的生成。
    image

    import requests
    import time
    import random
    import math
    import pywasmwasm_url = "https://match.yuanrenxue.cn/static/match/match15/main.wasm"
    resp1 = requests.get(wasm_url)
    with open("main.wasm", mode="wb") as file:file.write(resp1.content)t1 = int(time.time() / 2)
    t2 = int(time.time() / 2 - math.floor(random.random() * 50 + 1))
    module = pywasm.load('./main.wasm')
    result = module.exec('encode', [t1, t2])
    m = "{}|{}|{}".format(result, t1, t2)
    print(m)
    

    运行得到如下结果,形式与数据包中一致。
    image

  10. 编写最终代码。

    import requests
    import time
    import random
    import math
    import pywasm
    import rewasm_url = "https://match.yuanrenxue.cn/static/match/match15/main.wasm"
    resp1 = requests.get(wasm_url)
    with open("main.wasm", mode="wb") as file:file.write(resp1.content)res_sum = 0for i in range(1, 6):t1 = int(time.time() / 2)t2 = int(time.time() / 2 - math.floor(random.random() * 50 + 1))module = pywasm.load('./main.wasm')result = module.exec('encode', [t1, t2])m = "{}|{}|{}".format(result, t1, t2)url = "https://match.yuanrenxue.cn/api/match/15?m={}&page={}".format(m, i)headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 ""Safari/537.36","cookie": "Hm_lvt_9bcbda9cbf86757998a2339a0437208e=xxxx; HMACCOUNT=xxxx; ""Hm_lvt_c99546cf032aaa5a679230de9a95c7db=xxxx; no-alert3=true; tk=-xxxx; ""sessionid=xxxx; Hm_lpvt_9bcbda9cbf86757998a2339a0437208e=xxxx; Hm_lpvt_c99546cf032aaa5a679230de9a95c7db=xxxx",}resp = requests.get(url, headers=headers)string = resp.textpattern = '{"value": (.*?)}'findall = re.findall(pattern, string)for item in findall:res_sum += int(item)
    print(res_sum)
    

    运行得到最终结果。
    image

  11. 提交结果,成功通过。
    image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/825468.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatOps是什么

ChatOps是一种运维和开发团队在沟通、协作和自动化方面的实践方法。它的核心思想是将运维和开发操作集成到团队常用的聊天工具中,通过命令行或简单的自然语言指令来执行各种操作和任务,从而提高团队的效率和透明度。一、ChatOps的概念 ChatOps是一种运维和开发团队在沟通、协…

编程 和 数学 的关系是什么

编程 和 数学 的关系有:1. 共同的逻辑思维基础;2. 共享抽象建模的特性;3. 算法与数学之间的紧密联系;4. 数据结构和数学对象的对应关系;5. 计算机科学中的数学理论;6. 创新和问题解决的共同性。编程和数学都建立在严密的逻辑思维基础上。数学是一种形式化的语言,通过推理…

独显直连是啥意思

独显直连(Direct GPU Access,DGA)是一种涉及计算机图形卡和显示系统交互的技术。这种配置方式允许操作系统或应用程序直接与图形卡硬件进行通信,绕过传统的操作系统驱动和API层。独显直连在提高图形性能、降低延迟、并为高性能计算带来优势方面有其独到之处。本文将深入探讨…

Diffuision Policy + RL -------个人博客_ZSY_20241101

Diffusion Policy: Visuomotor Policy Learning via Action DiffusionCheng Chi, Zhenjia Xu, Siyuan Feng, Eric Cousineau, Yilun Du, Benjamin Burchfiel, Russ Tedrake, Shuran Song 原论文链接 投在了IJRR上 点击:原作者论文思路讲解 1. PPO背景引入 这里简要交代PPO的算…

抖音蓝V信息采集器快手蓝V商家联系方式批量提取工具

抖音蓝V信息采集器快手蓝V商家联系方式批量提取工具 作者V♥553813195 关于抖音蓝V信息采集器和快手蓝V商家联系方式批量提取工具,以下是详细的分析:一、抖音蓝V信息采集器 定义与功能 抖音蓝V信息采集器是一款专为抖音平台设计的工具,旨在帮助用户快速、准确地采集具有蓝V认…

halo配置踩坑过程小记

halo配置过程详解写在最前:​ 终于搞定了最后的一步域名解析配置,其实动态博客的折腾程度也不低于当时的hexo吧,也可能当时的痛苦过程已经忘了。。整理一下思路,记录一下配置过程走过的坑。 ​ 我是从hexo用了半年想折腾点新玩意儿的,其实hexo配置自动化部署之后也挺方便的…

wordpress设置自定义字体

wordpress设置自定义字体详解wordpress设置自定义字体: 失败的操作过程:写在最前:试了一天多的引用字体,方法包括但不限于:下载.ttf、.otf格式字体,转化为wotf 、wotf2格式,挂在github仓库用CDN引用,得到css链接​ 然后这里填字体名称和CSS链接,试了很久很久,都失败了…

组合数学与计数原理

组合数学与计数原理 date: 2024/10/29. 不同情况求组合数 求组合数的四种方法。 Lucas 定理 如果 \(p\) 是质数,则对于 \(\forall m, n \in \text{Z},1 \leq m \leq n\),有: \[\binom{n}{m}=\binom{m \bmod p}{n \bmod p}*\binom{m/p}{n/p} (\bmod p) \]即把 \(n,m\) 表示为…

Java面试题中高级进阶(JVM篇Java垃圾回收)

说说Java对象创建过程?知道类的生命周期吗?简述Java的对象结构?如何判断对象可以被回收?JVM的永久代中会发生垃圾回收么?你知道哪些垃圾收集算法?似乎有点模糊了,那就大概看一下面试题吧。前言 本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说Java对象创…

不写完整sql,DBeaver如何查询数据?效率翻倍!

前言 我们在使用DBeaver时,最常用的就是查询数据,除了在DBeaver里面直接写完整的sql语句进行查询外,其实还可以用不完整的sql语句来查询,效率翻倍。那么,我们该如何操作呢? 如何操作 首先,我们还是照旧打开某一张表的数据,这样默认是没有任何查询条件的。当我们需要按照…

在机器学习中,L2正则化为什么能够缓过拟合

在机器学习中,L2正则化作为一种有效的技巧,能够显著缓解模型的过拟合现象。主要原因包括:1.对权重进行约束,减少模型复杂性;2.增强模型的泛化能力;3.防止权重过大导致的数值不稳定;4.与损失函数相结合,实现模型目标的平衡;5.鼓励权重的均匀分布。通过L2正则化,我们可…

CTF学习(15)MISC(FLAG)

1.图片(?)--->查看详细信息(无果)--->010editor查看是否修改宽高或内藏编码(无果)---使用stegsolve逐层查看(无果) --->选中RGB三个通道的0层使用preview按钮发现存在PK文件(知识点:PK是一种压缩文件)选择SAVE Bin保存为.zip格式的文件 (目前遇到的这种LSB隐写题目都…