猿人学第一届第二题

本文讲述了如何使用油猴和逆向工程技术来处理网页中的反debugger机制,以及如何通过混淆的cookie进行逆向分析。作者介绍了如何利用HookCookie脚本和在线工具如Fiddler和OSCHINA.NET的工具来解决遇到的问题,最终成功获取并解析数据。
摘要由CSDN通过智能技术生成

https://match.yuanrenxue.cn/match/2icon-default.png?t=N7T8https://match.yuanrenxue.cn/match/2

一、反debugger

        打开f12刷新网页来到一个无限debugger,往上跟一步发现是一个构造器生成的debugger,那就直接用油猴hookdeconstructor,轻松跳过debugger。

// ==UserScript==
// @name         hookdebugger
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://match.yuanrenxue.cn/match/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=yuanrenxue.cn
// @grant        none
// @run-at       document-start
// ==/UserScript==

Function.prototype.__constructor_back = Function.prototype.constructor;
Function.prototype.constructor = function() {
    if(arguments && typeof arguments[0]==='string'){
        if(arguments[0].indexOf("debugger")!=-1){
            return function(){}
        }
    }
   return Function.prototype.__constructor_back.apply(this,arguments);
}

二、逆向点分析

        标题为混淆动态cookie,那肯定与cookie有关,清除cookie翻页对比cookie,可以看出cookie里的m值在变化,那就是它了。

三、cookie:m值逆向

        逆向cookie,那太好办了,直接油猴hookcookie。

// ==UserScript==
// @name        Hook Cookie
// @namespace   http://tampermonkey.net/
// @version     0.1
// @description try to take over the world!
// @author      You
// @include     https://match.yuanrenxue.cn/match/2
// @grant       none
// @run-at      document-start
// ==/UserScript==

(function () {
    let cookieCache = "";
    Object.defineProperty(document, "cookie", {
        set: function (val) {
            console.log("Hook set cookie => ", val);
            if (val.indexOf("m=") !== -1) {
                debugger;
            }
            cookieCache = val;
            return val;
        },
        get: function () {
            return cookieCache;
        }
    });
})();

开开心心的来hookcookie,结果。。。

网页一直在跳转,这个1023593还一直在增加,怎么回事,卡死了!看来hookcookie暂时没法用了。

接下来分析下网络发包情况,重开浏览器,关掉hookcookie,清空网络包,删除cookie里的m键值,刷新网页,观察发包情况发现第一个‘2’不包含cookie的m值,第二个‘2’包就有m值,会不会是第一包定义了m值,但是第一个‘2’包的响应数据看不到。

        用fidder抓包或者python请求可以发现其返回的是一个混淆的js代码。用猿人学的采集工具解混淆看看,简单的读下代码。

,重点是中间的这个自执行函数。搜document(ob混淆一般无法混淆window、document之类的环境),就一处,在最后,简单的读下最后几行就会明白,原来是设置了cookie.m后重新加载页面,怪不得发了再次‘2’包。

至此逆向位置找到,开始调试代码。(先把这重载页面的location["reload"]()删除。)

可以看出后三个节点是两个函数,一个函数调用,正是生成m值得地方,把这三个代码扣下来缺啥补啥。

如果补上缺的函数后调试出现卡死情况,一般都是进行了格式监测,直接把刚补的函数进行代码压缩后再补进来。在线 JS/CSS/HTML 压缩OSCHINA.NET在线工具,ostools为开发设计人员提供在线工具,提供jsbin在线 CSS、JS 调试,在线 Java API文档,在线 PHP API文档,在线 Node.js API文档,Less CSS编译器,MarkDown编译器等其他在线工具icon-default.png?t=N7T8https://tool.oschina.net/jscompress

全部补完代码和环境后,没有报错,但是打印生成的m值,却卡死来,那不用想肯定是改写了console.log,那就在开始定义个变量接收console.log,比如console_log=console.log,用console_log(cookie_m),来打印m,轻松拿到数据,剩下的就是py调用了。

整体来说其实这题还是比较简单的,一个反调试debugger,还有个反hook_cookie,的,然后就是一个ob混淆的js代码。搞定了这些,剩下的就是扣代码缺什么补什么了,补代码的过程中,有个格式校验,还有个重写来console.log,这都是小问题。

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于您提到的错误TypeError: list indices must be integers or slices, not str,这是因为您在访问列表中的元素时使用了字符串作为索引,而列表的索引必须是整数或切片类型。解决这个错误的方法是使用整数或切片来访问列表中的元素。 关于您提到的猿人js逆向的问,我需要更多的信息才能为您提供具体的答案。对于爬虫编写,您可以使用Python的各种库(如Requests、BeautifulSoup、Scrapy等)来获取网页的内容,并进一步解析和处理。您可以使用这些库发送HTTP请求获取网页内容,然后使用解析库来提取您需要的数据。 爬虫编写的一般步骤如下: 1. 导入所需的库 2. 发送HTTP请求获取网页内容 3. 使用解析库解析网页内容 4. 提取所需的数据 5. 进行数据的进一步处理和存储 您可以根据具体的需求和网站的结构进行相应的编写和调试。如果您需要更具体的帮助,请提供更多的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python:TypeError: list indices must be integers or slices, not str报错解决及原理](https://blog.csdn.net/hhd1988/article/details/128031602)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str](https://download.csdn.net/download/weixin_38590567/14871394)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值