瑞数学习录
type
status
date
slug
summary
tags
category
icon
password
基本一年没更博客了……
今年很快就过去了,但并没有记录什么,随便放一下瑞数的学习记录吧;要是有的内容是空的,那就证明还没写 🤣
💡
分析瑞数4、5、6的环境,手动补环境使他能够成功请求;后期有可能会记录通杀瑞数的一些GitHub脚本,也就是走层代理让他去xhr构造;或再用一些补环境的框架进行补瑞数的环境,像瑞数其他版本比如3和vmp有基本再增加。
 

📝 主旨内容

瑞数4

特征

访问记录
第一次:202
第二次:200
本来记得是202,打开房地产一看变412了 还以为自己记错了;然后一看Cookie:Set-Cookie: UA1L1zGonajvO=60HXfC.....;;好家伙上瑞数6了,之前没记录 又得找个新的瑞数4的环境了
然后我发现房地产edge是瑞数6,chrome是瑞数4……
但是我新开了个无痕又是6了,不管了先。
 
 
 

瑞数5

瑞数4的案例目前找不到了,补了5,4肯定也是可以的;
拿某大学的总医院来测试

特征

status code:
第一次:412
第二次:200
 
debugger:
两次
 
 
Cookie:
5开头的
notion image
第一个O结尾的是服务器给set的(看httponly那个对号),第二个就是我们本地生成的
 
所以我们来hook cookie的关键字,来看看在哪里生成Cookie的
清除Cookie后进行hook测试
ihkYnttrQXfVP
 
notion image
看右边的堆栈,我们看是vm,我们可以知道vm是v8利用了eval或者cal去等去执行的
所以我们知道了,cookie是在这个vm文件里进行生成的;所以我们要可以选择去追这个vm是由哪里来的;但是我们只需要cookie 我们直接扣所有的还原出让他正常写进document.cookie就可以了
所以我们直接跳出vm,来看谁eval的
notion image
打断点 删除cookie 重新来
 
但是,断下来的地方 不是我们上次看到的…
notion image
我们利用浏览器的替换功能,将index.html替换下,然后固定下index.html方便调试
定到cookie那里,再去替换index.html
notion image
可以看到是call,后边的_$dc就是要执行的代码
我们可以直接把这个index.html给扣下来来用
notion image
里边就是有一个自执行函数,还有引入的js资源
 
我们把自执行函数和js(ts)资源扣到本地,然后就是补环境了

补环境

补环境之前再来捋以下两次不同的页面都是什么
第一次412 给你一个带有自执行js函数的页面,页面引用了ts资源,并伴有content
notion image
 
第二次200 客户端执行js代码,生成正确的cookie去请求成功
 
 
补环境记住:
  • 观察自吐,然后补下吐的
  • 缺少函数 就去vm里调,看调的什么
 
  1. 补window.top
  1. $8j[$OD[20]],
    1. 但是我在index.html并没有搜到,node报这个错,我们知道了会call一个新的js里,我们想法去跟下那个新的js里,所以我们打到cal那里 要单步跟进vm文件里
      但是有非常多的,我们全打上断点(记住是单步进去再打断点,有很多是if else里的,要是在else里 其实if也应该打,因为node里走的有可能和浏览器走的分支是不一样的)
      notion image
       
      notion image
      _$8j是document
      所以调的是createElement,传参是div
  1. My[$OD[639]],整好就在他后边
    1. notion image
      可以看到是$My[$OD[639]],$My是刚才创建的div标签
      我们div标签里要有getElementsByTagName函数,去寻找了i标签
       
      所以我们刚才补的2里的document.createElement返回的div的对象,里边得满足上边的条件
  1. $8j[$OD[639]],整好还在上边的后边
    1. notion image
      补的也就是document.getElementsByTagName,
      获取的也就是meta tag的东西
      还要补下meta
      notion image
      meta有俩 所以得返回个数组或对象都是,对象得指定length
  1. Cannot read properties of undefined (reading 'removeChild')
    1. notion image
      所以应该是meta跟removeChild的相关
       
      继续往下走js,可以看到关键点
      notion image
      _$My就是最后一个meta
       
      notion image
      我们把页面中所对应的属性和值,这样补好
      他后面会取content,可以把content先不补 去调试一下
  1. String.prototype.slice called on null or undefined
    1. notion image
      补好location就行了
  1. TypeError: $8j[$OD[89]] is not a function
    1. 全打上断点,其实可以发现 其实我们的代理 已经帮我们吐出来了
      notion image
  1. TypeError: $g6[$OD[794]] is not a function
    1. 方法: get 对象: document 属性: attachEvent 属性类型: string 属性值类型: undefined
      补好就好了
  1. TypeError: Cannot read properties of undefined (reading 'addEventListener')
    1. 我补好了document的还是会报错,依旧是这个报错
      notion image
      那把documentElement补下看看,就好了
  1. TypeError: $g6[$OD[794]] is not a function
    1. 全局就一个,但是我一直断点不下来这个位置,我发现这是个if else,打到if上 果不其然就断下来了…
      notion image
       
      所以关键点就是我们要走到if里,是if为true
      notion image
但是还报这个错,我已经补了
最后发现是documentElement里的addEventListener
这里多继续运行几下也会发现是documentElement的
notion image
  1. TypeError: Cannot read properties of undefined (reading 'length')
    1. notion image
      补base
      补完还是报错
      notion image
      得补script标签,对着浏览器补好就行了
  1. TypeError: $93[$WU][_$IV[5]] is not a function
    1. notion image
      补的也就是script标签里的getAttribute方法
      补好就好了
  1. TypeError: Cannot read properties of undefined (reading 'removeChild')
    1. 吐的最后一行是:document.getElementsByTagName接受的值: script
      所以应该还是script标签里的removeChild方法,调试跟一下
      notion image
      script.parentElement.removeChild补好就ok了
  1. TypeError: $93[$WU][_$IV[5]] is not a function
    1. 还是11的那个玩意,估计所调的函数变换了
      notion image
      补的是getAttribute
      是我第0个script没补
  1. TypeError: Cannot read properties of undefined (reading '0')
    1. 吐的是
      方法: get 对象: window 属性: parseFloat 属性类型: string 属性值类型: function
      但是这上边是有定义的啊,我还看了有些报navigator的,我也都补了
      但还是报这个错
       
      然后查看之前的undefined的,把基本的都补了,发现还是报错
      最后想着一个个全补上,补到window.execScript就好了
       
      但是,我发现吐的更少了,然后就报错了,肯定不对劲
       
      最后全补上,补了好多还是报错…
      最后的解决方案
      自执行函数
      content
      ts脚本全换…
      就好了
      我怀疑是我昨晚的脚本,今中午又继补的,瑞数里的那个时间戳校验的问题
       
       
 
notion image
看着差不多,我们写个py脚本请求一下就知道了
我们需要把自执行函数,以及ts资源和content都替换
 
以下是js代码,用python的时候repleace关键字就好了
由于412返回的是页面 所以我们可以直接用xpath直接进行提取
利用session功能,然后进行封装好发哦是那个测试
 
可以看到俩cookie都有了,但是我不知道咋打印 懒得找了 所以直接走到burp来查看了
notion image
至此 瑞数5代就成功补完环境,瑞数5的补环境在瑞数4下按理说是可以过的
 

瑞数6

 
补好瑞数5后,瑞数6在5的基础上补就可以了,非常简单
直接拿dian网测试就行了
notion image
 
notion image
 
只不过ts和js自执行函数和5代颠倒了
6代的自执行函数是在外部js中
notion image
 
ts内容是在412页面中
notion image
 
多补了个meta的getAttribute,因为js内容跟5代发生了变化
 
 
 
notion image
 
 

直接梭

按网上说rpc是通杀的
这个工具在2024/12/11测试是好使的
测试了瑞数5、6带上请求头都直接通杀了
 

🤗 总结归纳

总结文章的内容

📎 参考文章

瑞数4
 
瑞数5
 
瑞数6
 

© muxue 2021-2025