其他分享
首页 > 其他分享> > js逆向不用扣代码系列(4)—3分钟快速破解猿人学第10题(重放攻击对抗之偷梁换柱)

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