猿人学题解1-4


第一题

本题链接:http://match.yuanrenxue.com/match/1

1.分析请求

在这里插入图片描述
标红处为加密参数,全局搜索api/match/1,如下图:
在这里插入图片描述
将上图中黄色js代码复制到记事本,并整理出含有api/match/1的js代码块,代码美化后如下:
美化工具:http://tool.yuanrenxue.com/deobfuscator
在这里插入图片描述
上图为部分核心代码,可知m参数来源于oo0O0这个函数+window.f,故下一步就是找到它们,
同上一步在搜索oo0O0,然后美化如下:
在这里插入图片描述

发现这个方法内部定义了些变量,方法,但是它的最后两句很可疑,一是因为eval函数并且只有这儿用到了传来的mw参数,二是因为return ’ ', 让m只与window.f有关,于是乎大胆猜想是这个函数内部在修改window.f的值,在控制台打印window.f
在这里插入图片描述
果然就是加密的参数,在控制台打印atob(window[‘b’]),得到如下,一段被混淆的js代码
在这里插入图片描述
美化后得到一段很长的js代码,以下为部分核心代码截图:
在这里插入图片描述
终于找到window.f的生成参数,正常情况我们只需要扣js代码执行就完成了,但是可以看到mwqqppz这个参数在这段函数中从未定义过,就拿来用了,顿时陷入沉思,别急我们继续打印eval中的的参数:
由于用到的J函数于是在控制台执行J函数定义的相关代码:
在这里插入图片描述
接着依次打印:[J(‘0x0’, ‘]dQW’)] 和 J(‘0x1’, ‘GTu!’) 和 ‘\x27’
在这里插入图片描述
于是eval(atob(window[‘b’])[J(‘0x0’, ‘]dQW’)](J(‘0x1’, ‘GTu!’), ‘\x27’ + mw + ‘\x27’)),这段代码将可以改写为eval(’*mwqqppz*‘).replace(‘mwqqppz’,‘mw’) ),其中*代表其他代码,意思就是将代码字符中mwqqppz替换成mw,然后再用eval执行,如果对eval不熟的,自行查询eval用法哦。

至此终于明白就是将最开始的一个跟时间戳相关的参数(注意我说的是相关的参数,而不是时间戳)带到hex_md5中执行即可,可以使用node,也可以使用python的execjs库调用js,不过实测node要快一点

2.总结

核心:不是什么js混淆,二是敏锐的洞察力


第二题

1.分析请求:

在这里插入图片描述
可知cookie中m为加密的,如果你的cookie不只有m还有其他,直接去application中clear掉所有cookie,避免其他参数干扰,刷新再次访问。
在这里插入图片描述
与下面这个请求中就差一个cookie参数,应该是前面的请求返回值代码生成了cookie
在这里插入图片描述

2.postman请求

postman模拟这个不带cookie的请求,得到一段混淆代码:
在这里插入图片描述
用网站自带的工具:http://tool.yuanrenxue.com/decode_obfuscator美化代码:
搜索document[‘cookie’] 或者document.cookie,定位到加密处:
在这里插入图片描述
接下来就是扣相关的js代码获得加密参数m,带入到请求中

3.写在后面

这里为啥要用postman再去+模拟请求呢,因为这个请求chrome不能加载返回值啊,我就想看看它到底返回了啥,并且它是不带cookie的,万一它就返回一段加密的js呢
在这里插入图片描述

4.总结

核心:经验,洞察力,猜想力


第三题

1.没啥说的直接上代码

import requests
from collections import Counter

"""
猿人学第三题
"""
# 最恶心的一点是服务器会校验请求头顺序 还是有使用session保持会话

# headers = {
#     'Connection': 'keep-alive',  # 这里和第二行换了位置
#     'Host': 'match.yuanrenxue.com',
#     'Content-Length': '0',
#     # 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
#     'User-Agent': 'yuanrenxue.project',
#     'Accept': '*/*',
#     'Origin': 'http://match.yuanrenxue.com',
#     'Referer': 'http://match.yuanrenxue.com/match/3',
#     'Accept-Encoding': 'gzip, deflate',
#     'Accept-Language': 'zh-CN,zh;q=0.9'
# }

headers = {
    'Host': 'match.yuanrenxue.com',
    'Connection': 'keep-alive',
    'Content-Length': '0',
    # 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
    'User-Agent': 'yuanrenxue.project',
    'Accept': '*/*',
    'Origin': 'http://match.yuanrenxue.com',
    'Referer': 'http://match.yuanrenxue.com/match/3',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9'
}
# 利用字典统计申请号出现次数
dic = {}
url = "http://match.yuanrenxue.com/logo"
session = requests.session()
sessi
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值