猿人学第12题(题目会不定时更新)

2023-11-12 00:30

本文主要是介绍猿人学第12题(题目会不定时更新),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

猿人学对抗赛系列文章目录

猿人学第13题


猿人学12题为特别简单的难度,很适合js逆向刚刚入门的新手,这里先说思路和该题js逆向的一些小技巧,最后放上博主的代码,但是最好不要直接看代码哦,js逆向的思路才是最重要的。

首先题目网址: 猿人学第12题

如果是练习js逆向的话,可以不注册登录,但是博主建议还是注册一个账号,感受一下解题刷成就的快感,绝对不是打广告(偷偷告诉你们,博主榜上有名哦,看你们能不能猜到我的id),话不多说,直接开始

在这里插入图片描述
进入题目网址,可看见要求,抓取5页数字,前三页数据可见,而后俩页是需要带上特定请求头才能访问,再来看看加密参数。


在这里插入图片描述
可以看到每次请求返回的数据都是动态加载的数据,接口有2个参数值,page很明显是页码,而m就是我们需要破解逆向的参数,现在知道加密参数是什么了,该怎么找到这个加密参数的生成函数在哪里呢?

这里就介绍几种寻找加密参数的方法:

  • 通过header旁的Initiator查看,这里可以看到有很多项,我们这里就直接点request进去了,因为jquery是官方的,基本不会有变态网站会改里面的东西,省下的俩个别问我为什么选request,而不选(anonymous),问就是经验,看起来这个(anonymous)就不太像( •̀ ω •́ )✧

在这里插入图片描述

  • 使用xhr断点寻找加密函数,如下点击+,添加想要断点的xhr关键词,注意宁可少输入,都不能输错了,如这次的数据接口:https://match.yuanrenxue.com/api/match/12page=1&m=eXVhbnJlbnh1ZTE%3D
    就不能输入后面m的参数,因为m是每次都会变的加密参数,很有可能断不到,page也是一样,所以这里用api/match来断点

在这里插入图片描述

  • 当然最简单的办法就是直接ctrl+shift+F在弹出的搜索框直接搜,但是对于加密参数名称过于平常是不适用的,比如本体的m,真就一搜一大把
  • 还可以用hook的方式来寻找,这里就不介绍了,后面会有题目需要hook的时候再详细介绍

通过xhr断点的方式会在这里断住,查看调用栈,瞧瞧,是不是很熟悉,又是你们几个,这里直接点进去request,或者是Initiator点进来,都会在这里跳到这里

在这里插入图片描述
在这里插入图片描述
瞧瞧,这参数不都明摆着出来了,虽然断点在723行,但是往上看可以看见window.page就是页码,m则是btoa('yuanrenxue' + window.page),熟悉js的同学就知道了,btoa是一个常见方法,就是对其中的字符串转换为base64,这里给一个在线转换的网址:链接: https://www.bejson.com/enc/base64/

在这里插入图片描述


确定了加密参数的生成,到这里js逆向的过程就结束了,是不是很简单,接下来就是用python实现js的功能的时候了,代码如下

import base64
import json
import requestskv = {'User-Agent': 'yuanrenxue.project', 'cookie': 'sessionid={}'.format(你自己的sessionid)}
def jie(o):c = 'yuanrenxue' + str(o)encode_str = base64.encodebytes(c.encode('utf8'))  # 转为base64return encode_str.decode()def main(u1):global nume = jie(u1)r = requests.get(f'http://match.yuanrenxue.com/api/match/12?page={u1}&m={e}',headers=kv).textl = json.loads(r)for i in l['data']:num += i['value']if __name__ == "__main__":num = 0for i in range(1, 6):main(i)print(num)

总结

12题只是稍微处理了一下参数,而且并没有任何阻挠js逆向的手段,还是非常简单的,对于一些文章中的知识名词啥的不是很了解的话可以看看我的这篇文章:

js逆向学习必备技巧 (还没写完(~ ̄▽ ̄)~)

这篇关于猿人学第12题(题目会不定时更新)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/393860

相关文章

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

Linux Mint Xia 22.1重磅发布: 重要更新一览

《LinuxMintXia22.1重磅发布:重要更新一览》Beta版LinuxMint“Xia”22.1发布,新版本基于Ubuntu24.04,内核版本为Linux6.8,这... linux Mint 22.1「Xia」正式发布啦!这次更新带来了诸多优化和改进,进一步巩固了 Mint 在 Linux 桌面