JS逆向 | 无限Debugger之淘大象

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: JS逆向 | 无限Debugger之淘大象

今天继续和大家研究JS逆向,不少小伙伴在JS逆向的时候遇到过无限debugger的反爬,今天就拿一个网站练练手感受下无限debugger。

分析请求

先打开这次的目标网站--淘大象(https://taodaxiang.com/credit2)

打开「开发者工具」就自动进入debug,我们先格式化看看能不能通过重写函数解决。

显然不是很好解决,所以我们试试通过「条件断点」的方法绕过这个反爬。

我们在 3393 与 3395 行右键添加「Add Conditional breakpoint」并在出现的对话框中输入「false」,这个时候无限debbuger的反爬就被我们绕过了。

虽然这里很快就绕过了反爬但是「条件断点」有一定的局限性,这里推荐一篇文章以供学习,就不再赘述。

https://segmentfault.com/a/1190000012359015

解决完反爬措施,我们刷新页面查看页面请求,很快就定位到请求接口、加密参数等信息。

请求接口:

加密参数 sign :

定位加密位置

通过抓包请求我们定位到了接口和加密参数,我们试着通过搜索sign关键字定位一下加密位置。

通过搜索我们找到三个包含关键字的文件,通过检索文件,很快定位到了sign值加密的位置:

分析加密

很明显这个js文件经过一定程度的混淆,现在有两种方法解决:

一是直接扣代码,绕过debugger之后扣这个代码不要太简单。

二是通读加密,直接改写成python加密。

这个加密比较简单,整体是md5加密这点通过分析请求可以猜到,多次请求加密都不变,接下来就是分析是哪些字段加密成md5值。

这里比较明显的是js中的两段代码:

_0x2c114b['XDFEp']这个方法是将字符串拼接

_0x2c114b['zANjZ']这个方法是取字符串的MD5值

经过断点调试,发现最后字符串是由「查询的关键字」+ 「固定的key」+ 「查询的关键字」+ 「type参数值」拼接成的。

比对两种方式,通过python方法改写更加方便,主要代码如下:

    from hashlib import md5
    def md5value(s): 
    a = md5(s.encode()).hexdigest()  
    return a


    到这里这次的分析的网站 -- 淘大象 就被我们攻克了,这次的网站加密不是很难,主要难点是分析请求时的无限debugger。

    其实其他同类型的网站还有很多,我推荐大家阅读下面的文章,文章提到了其他解决debugger的方法希望对你有帮助。

    https://mp.weixin.qq.com/s/BwH1JxY5jhFomZLwlQIvSA

    相关文章
    |
    2月前
    |
    数据采集 JavaScript 前端开发
    JavaScript逆向爬虫——无限debugger的原理与绕过
    JavaScript逆向爬虫——无限debugger的原理与绕过
    104 2
    |
    4月前
    |
    JavaScript 前端开发 数据安全/隐私保护
    雪球JS逆向:阿里系加密acw_sc__v2和反debugger
    雪球JS逆向:阿里系加密acw_sc__v2和反debugger
    278 1
    |
    4月前
    |
    Web App开发 JavaScript 前端开发
    IDEA——使用JavaScript Debugger调试代码
    IDEA——使用JavaScript Debugger调试代码
    35 0
    |
    5月前
    |
    Web App开发 JavaScript 前端开发
    js 调试—— 【控制台】debugger语句 、 命令行API
    js 调试—— 【控制台】debugger语句 、 命令行API
    290 0
    |
    7月前
    |
    JavaScript
    JS异常处理——throw和try、catch以及debugger
    JS异常处理——throw和try、catch以及debugger
    |
    7月前
    |
    自然语言处理 JavaScript 前端开发
    超越函数界限:探索JavaScript函数的无限可能
    JavaScript中的函数是一种重要的编程概念,它允许我们封装可重用的代码块,并在需要时进行调用。本文将深入介绍JavaScript函数的各个方面,包括函数定义和调用、参数和返回值、作用域和闭包、高阶函数以及常见的函数应用场景。
    |
    JavaScript
    原生js做无限弹窗(娱乐)
    原生js做无限弹窗(娱乐)
    94 0
    |
    JavaScript 前端开发
    打破边界:探索JavaScript技术的无限可能性
    打破边界:探索JavaScript技术的无限可能性
    87 0
    |
    JavaScript
    JS——瀑布流无限加载以及动态生成a标签
    瀑布流无限加载以及动态生成a标签
    183 0
    |
    Web App开发 JavaScript 前端开发