首页 > 其他分享 >猿人学web端爬虫攻防大赛赛题第15题——备周则意怠-常见则不疑

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

时间:2024-11-01 22:19:30浏览次数:1  
标签:web 15 赛题 wasm time import main match pywasm

题目网址: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 pywasm
    
    wasm_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 pywasm
    
    wasm_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 re
    
    wasm_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 = 0
    
    for 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.text
    	pattern = '{"value": (.*?)}'
    	findall = re.findall(pattern, string)
    	for item in findall:
    		res_sum += int(item)
    print(res_sum)
    

    运行得到最终结果。
    image

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

标签:web,15,赛题,wasm,time,import,main,match,pywasm
From: https://www.cnblogs.com/sbhglqy/p/18521393

相关文章

  • ctf web赛道基础 万字笔记
    《Java代码审计》http://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247484219&idx=1&sn=73564e316a4c9794019f15dd6b3ba9f6&chksm=c0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene=21#wechat_redirect《Web安全》http......
  • CTF学习(15)MISC(FLAG)
    1.图片(?)--->查看详细信息(无果)--->010editor查看是否修改宽高或内藏编码(无果)---使用stegsolve逐层查看(无果)--->选中RGB三个通道的0层使用preview按钮发现存在PK文件(知识点:PK是一种压缩文件)选择SAVEBin保存为.zip格式的文件(目前遇到的这种LSB隐写题目都是将数据放在0......
  • 2024御网杯web
    Webinput_data就是一个简单是svn泄露直接在pristine/57/中即可找到Admin通过爆错和提示可以确定是Thymeleaf模板注入命令执行参考资料:https://zhuanlan.zhihu.com/p/248416919https://xz.aliyun.com/t/9826?u_atoken=b9d5b4c8f462ecf95b3441b560c7c2f1&u_asig=0a47......
  • 黑马JavaWeb-day04
    @目录mavenmaven简介maven安装IDEA集成maven创建maven项目Maven坐标依赖管理单元测试Web入门Springboot入门HTTP协议三层架构分层解耦\(IOC\&DI\)入门\(IOC\)和\(DI\)详解mavenmaven简介maven:\(Maven\)是\(apache\)旗下的一个开源项目,是一款用于管理和构建\(java\)项目的......
  • 【Java Web】使用JDBC操作数据库(含代码示例)
    文章目录JDBC主要组成部分访问数据库步骤数据库交互StatementPreparedStatementSQL注入攻击演示示例单查询多查询返回记录数JDBC(JavaDatabaseConnectivity)是Java中用于执行SQL语句的标准API,它提供了一种统一的方式来访问各种关系型数据库。JDBC使得开发者能够以......
  • ctfshow web入门 文件上传
    CtfshowWeb入门151 查看源代码,发现只能上传.png的文件用bp抓包.png的图片格式添加一句话木马,文件格式修改成.php   对于上传成功的后门代码,直接通过hackbar发送post包利用php内置system()函数执行  查看flag.php文件   152和上一题做题步骤一样......
  • webpack5配置传统jQuery多页面应用
    简介大家好,我是chenms,最近我们公司有要求需要开发几个以前传统的前后端不分离的jQuery老项目,现在大部分都是用vue或者react开发习惯了组件化的方式,所以我这边打算用webpack5配置一个可以打包传统jQuery多页面应用想法通过配置postcss给css自动加上前缀通过配置babel把e......
  • QILSTE H10-C315HRKYG高亮红光和黄绿光LED灯珠 发光二极管LED
    在LED技术的多彩世界中,H10-C315HRKYG型号以其独特的双色高亮红光和黄绿光而备受瞩目。这款尺寸为3.2x1.0x1.5mm的LED,不仅符合EIA规范标准包装,还是一款环保的ROHS合规产品,防潮等级达到Level3,完美适配SMT组装和焊接工艺。**技术参数的深度剖析**H10-C315HRKYG的技术参数是其性......
  • [网鼎杯 2020 朱雀组]phpweb
    打开靶机,抓包分析,获得连个关键参数func和p,根据初始页面提示了解连个参数大概是功能和功能参数测试func=system&p=ls提示hacker..说明有检测过滤那么我们先读取源码看看func=readfile&p=index.php点击查看代码<?php$disable_fun=array("exec","shell_exec","system......
  • (附源码)基于WEB的家乡特色农商品仓库管理系统的设计与实现-计算机毕设 26145
    基于WEB的家乡特色农商品仓库管理系统的设计与实现摘 要本论文旨在设计和实现基于WEB和SSM(Spring+SpringMVC+MyBatis)的家乡特色农商品仓库管理系统,以提高农产品仓储管理效率和服务水平。论文首先分析了传统农仓库信息管理存在的问题和需求,包括信息化程度低、管理效率不......