js逆向不用扣代码系列(4)—3分钟快速破解猿人学第10题(重放攻击对抗之偷梁换柱)
作者:互联网
网址:http://match.yuanrenxue.com/match/10
1.加密参数分析
打开控制台,直接被反调试了
调试堆栈
花里胡哨的, 不用管,再往上翻翻看看
这不就是著名的某x的变种吗,过掉反调试,抓下包看看
发现加密参数为m,再看这长度,基本坐实某x变种,到这已经基本确认几分钟内能拿下本题了
2.工具准备:SwitchyOmega,mitmdump
两个工具使用大概介绍下
SwitchyOmega新建情景模式,端口设置为mitmdump的默认端口8080,如下图所示
mitmdump使用前需要先下载证书,不明白的自行百度,然后新建一个py文件,命名为mitm_demo.py,内容如下:
# -*- coding:utf-8 -*-
def request(flow):
pass
cmd打开文件所在目录,执行mitmdump -q -s mitm_demo.py,然后SwitchyOmega插件选择mitmdump,地址栏输入百度地址,如果能够正常访问,则证明两个插件使用正常。
最终确认能够使用的效果图如下
3.偷梁换柱
截获第一页或第二页或第三页的m参数和headers参数给第四页、第五页使用,更改mitm_demo.py为下面代码
# -*- coding: utf-8 -*-
import re
import requests
url_list = []
def request(flow):
if 'api/match/10?page' in flow.request.url:
url = flow.request.url
if url not in url_list:
url_list.append(url)
m = re.findall('&m=(.+)', url)[0]
headers = flow.request.headers
new_headers = {}
for k, v in headers.items():
new_headers[k] = v
new_headers['User-Agent'] = "yuanrenxue.project"
page_4_url = 'http://match.yuanrenxue.com/api/match/10?page=4&m={}'.format(m)
print(page_4_url)
resp = requests.get(url=page_4_url, headers=new_headers)
print(resp.text)
flow.kill()
下面我们重新打开第10题地址,随便点击前三页中的一页,查看cmd内的打印内容,实际为访问第四页的响应,如下:
同理可以获取第五页数据。
总结:不要为了做题而做题,思路能够扩展到实际项目中才是真本领
标签:10,url,flow,js,headers,mitmdump,学第,page,match 来源: https://blog.csdn.net/weixin_42156283/article/details/110204399