猿人学2024新春题再探js盾

声明:

        本文章中所有内容仅供学习交流使用,不用于其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!若有侵权,请添加(wx:wyqlxl99)联系删除

前言:

       猿人学24年新春题来咯,打开控制台一看,哟这不是老朋友嘛 今天就弄你了!

图片

        直接上动态调试,具体怎么调试的过程可以去看我写的这一篇关于js盾动态调试的文章  某月瓜网站js盾动态调试方案

        查看一下我们需要逆向的参数,可以看到是这个n[jîÐ:   什么鬼玩意!

图片

        我们可以看到这个arraybuffer就是传递的参数 接下来我们就要找这个参数是哪来的,直接搜_160442然后看这个值是哪来的,然后往回跟栈

图片

        可以看到这里是vmp的部分而_106198就是vmp操作的堆栈那我们在这边下一个日志断点查看翻页的时候堆栈里面参数的变化

图片

            我们可以直接在输出的堆栈中可以看到几个关键点,12345678,'1[[510,341,137234.10000002384],[688,19,322725],[540,331,140376.79999995232]]',crypto-js  而且这段日志很短并且没有看到加密相关的一些魔数,所以这个加密大概率是vmp之外单独的方法加密的

图片

        利用盲狙法,我们点开堆栈找到点进去然后下一个断点

图片

图片

        下断点之后再次点击翻页就断到了,我们可以看一下这个部分_27257是明文

_198780应该是key _108159则是模式和填充模式

图片

        我们继续往下跟跟进这个方法我们可以看到这个方法,看过crypto-js源码的应该熟悉可以看到这一段

图片

图片

        我们在控制台输出_10969["\u2028","iv"]可以看到iv是undefined所以我们可以推测大概是ECB模式我们再跟进padding可以看到是pkcs7的填充模式

图片

        接下来我们再观察key一开始我们猜测12345678是key那我们通过下面去验证一下先拿一段crypto-js的代码去解析然后跟网页上的一对比相同,说明12345678就是我们需要的密钥

图片

        我们想要的Key,模式,填充模式、明文都有了那我们是不是要考虑这个玩意到底是AES还是DES加密,我们可以根据crypto-js的源码C_algo这个部分可以看出网页上的是DES加密

图片

图片

        我们使用DES按照key是12345678 模式是ECB 模式 填充模式是Pkcs7进行加密跟堆栈生成的值进行对比发现值是正确的

图片

接下来要看这一步是怎么来的从加密的密文变成下面这一段乱码

图片

        我们找到我们插桩的部分在插桩的下面再打上一个断点用于我们单步输出堆栈来查看堆栈里面有什么?我们通过逐步打印堆栈可以看到加密完之后会向堆栈推入一个atob那是不是就是atob把加密之后的密文变成乱码呢?

图片

        通过对比我们可以看到果真如此,至此加密的部分就搞定了

图片

        接下来我们来看解密部分的堆栈可以看到有一串乱码估计是返回值里面拿到的然后有一个八位的 'XWrcjxl1'盲猜大概率是key,应该用的也是同样的DES所以我们直接测试发现解密成功了

图片

图片

        现在我们解密就差两个东西第一个乱码值,第二个key值,我们可以从堆栈中看到服务端返回的是一个106068长度的arraybuffer下面还有一个长度10000的arraybuffer我们先转换看一下这两个的utf8 是怎么样的

图片

        转换出来我们可以看到是一串乱码那明文乱码和key肯定就藏在这里面那客户端是怎么去获取的呢?

图片

        可以看到他是先从106068中96068开始截取获取到最后一万位的code数组然后转换成字符串的形式

图片

        我们接着单步打印堆栈可以看到ÿÿÿÿ以及我画线的部分我们可以推测他是用上面转化出来的字符串按ÿÿÿÿ进行分割,分割之后的最后一位+当前访问的页数就是我们解密的密钥

图片

图片

        那密文呢?我们接着往下看 可以看到-2说明取的是分割出来8位数组的倒数第二位,然后进行btoa转换出base64字符串然后通过上面的key进行解密

图片

图片

        至此加密解密的部分就完成了!接下来就整理一下代码嗖一下就过去了,还有一个重点就是本题检测了tls如果tls检测不通过返回的content就不会是106068长度的,如果没用tls会直接返回异常

图片

  有兴趣的可以加入我的星球后续会持续分享和更新!

图片

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值