猿人学第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

相关文章

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

hdu1689(线段树成段更新)

两种操作:1、set区间[a,b]上数字为v;2、查询[ 1 , n ]上的sum 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdl

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

hdu 1754 I Hate It(线段树,单点更新,区间最值)

题意是求一个线段中的最大数。 线段树的模板题,试用了一下交大的模板。效率有点略低。 代码: #include <stdio.h>#include <string.h>#define TREE_SIZE (1 << (20))//const int TREE_SIZE = 200000 + 10;int max(int a, int b){return a > b ? a :

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

GIS图形库更新2024.8.4-9.9

更多精彩内容请访问 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信:digital_twin123 Cesium 本期发布了1.121 版本。重大新闻,Cesium被Bentley收购。 ✨ 功能和改进 默认启用 MSAA,采样 4 次。若要关闭 MSAA,则可以设置scene.msaaSamples = 1。但是通过比较,发现并没有多大改善。

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

题目1254:N皇后问题

题目1254:N皇后问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: N皇后问题,即在N*N的方格棋盘内放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在同一斜线上。因为皇后可以直走,横走和斜走如下图)。 你的任务是,对于给定的N,求出有多少种合法的放置方法。输出N皇后问题所有不同的摆放情况个数。 输入

题目1380:lucky number

题目1380:lucky number 时间限制:3 秒 内存限制:3 兆 特殊判题:否 提交:2839 解决:300 题目描述: 每个人有自己的lucky number,小A也一样。不过他的lucky number定义不一样。他认为一个序列中某些数出现的次数为n的话,都是他的lucky number。但是,现在这个序列很大,他无法快速找到所有lucky number。既然