傻不拉,阿弥陀佛

本文详细剖析了一种复杂的Web安全机制,涉及入口查找、变量初始化、时间戳计算、数组生成及加密算法等多个环节。通过断点调试,揭示了代码中如何利用时间戳、环境检测和数组操作生成cookie的过程,展现了防止自动化工具攻击的高级策略。

一、RS是什么?

RS是个der。

二、分析,破解流程

1.查找入口

1.在打开网站前,打上script断点

2.一直走到出现content值得那一个文件,一般普通得第二层入口是在当前直接搜"call",如果"call"被混淆了,这是时候就直接搜"window",然后继续搜将"window"赋值的那个变量,这个变量就是将"window"带入第二层。。。

2.加载流程

提示:一般的变量在开头,但是这个在中间,慢慢找就找到了
​ 当前案例:
1359行–1433行全是一些全局变量的的初始化,浏览器环境的属性,有些是后面需要的,遇到的时候我会提出来,其实后面好大一部分都是类似实例化的,后面再说。
1434行:
在这里插入图片描述
跟进去,除了9361行是生成当前时间戳,这个要扣,后面要用,其他三个方法是检测一些属性,后面不用
在这里插入图片描述
继续往下走,
在这里插入图片描述
1435–1449行都是在定义,实例化,
1450行里面是通过定义好的一串字符串分割然后转码的方式往上面定义的拿6个空数组里面填充值,可以跟进去看看,后面要用到这几个数组。

继续往下走:
下面一行就是 ;;_$od();
在这里插入图片描述
当前是生成两个256位数组,并往里面填充值,后面会用到多次,遇到了再说说细节…不写了 后面太长了 写不下去了,放弃~~

扣代码

1.将第一页中的content加到代码中,
2.将第一页中的那个自执行复制进去,eval出注释,禁止执行eval,
在这里插入图片描述
此处的ts是替换第二层中的object,使这个自执行中的属性内在第二层中使用,在第二层中,所有的object需要替换成这里的 ts;

接下来:
1823里面,是生成一个16位数组,然后截取qian4位作为一个新的数组,并返回;
在这里插入图片描述
1824行,生成一个数字,和他传进去的好像没关系,这样的一共有四个,后面会将这4个组成一个数组,然后拼接在一个数组的前面,用于加密计算。

1825行进入控制流:
在这里插入图片描述
单步跟几轮,一直到10998行,这里会生成一个定值时间戳,后面会对几个时间进行计算。
在这里插入图片描述
这里继续把刚才获取的定值时间戳赋值给另外一个全局变量:
在这里插入图片描述
继续往下走,这里有生成了一个当前时间戳,后面还是要用来计算,所还是需要记录下来;
在这里插入图片描述
继续往下走,这里是第二个(一开始为字符串,运行后位数字):
在这里插入图片描述
然后1826行进入控制流,一直跟到10387行,第三个的生成:
在这里插入图片描述
然后后面是一大堆检测各种事件的逻辑,浏览器的属性,以及storage属性,可以跟一跟,但是不用扣,直接滤过,这个控制流很长,要跟很久。

然后继续进入1827行,
在这里插入图片描述
这里就是生成的那第四的个元素:
在这里插入图片描述
接着:这几个方法都是在校验环境
在这里插入图片描述
一直走,走到1836行,进去
在这里插入图片描述
然后进入3948行:
在这里插入图片描述
然后一直单步跟,跟到11629行,这就是cookie生成的入口

请添加图片描述
然后跟进去,一直到12446行获得一个前面生成的时间戳的计算值:
在这里插入图片描述
这里对应的时间戳千万不要错了,不然后面得到值就会错
在这里插入图片描述

然后一直跟,要跟好久好久,期间都是在校验浏览器的属性以及检测自动化工具(selenume等等),一直跟到10502行,创建最终的大boos----128位数组,好戏正式开始:
在这里插入图片描述
12028行开始生成第一个元素:
在这里插入图片描述
提示:自己的调试后面代码的细节,由于后面是生成128数组的逻辑,每一行代码都有可能是生成某一个元素的细节,所以为了防止调试时点错了,导致从头开始,这里在这个控制流的开头打上断点,就算点错了 他会调制下一次控制流,不至于断掉。缺点就是会执行每一个流程,包括那些不必要执行的方法,倒是调试速度降低。
在这里插入图片描述
继续说:
继续往下跟一直跟到10671行,通过全局定义好的一个字符串生成一个16位的数组,后面也要用到:
在这里插入图片描述
继续往下走,碰到这个就是之前的那4个数字,组成一个四位数组,当前是第三个。
在这里插入图片描述
并且将这四个数字组成的数组拼接在上一步生成的那个16位数组的末尾,作为128数组的第一个元素

继续往下走,一直到12333行,这里是那之前时间戳计算出来的值继续计算最后生成8位数组,作为128数组的第二个元素:
在这里插入图片描述
继续跟到11857行,这里是128数组的第三个元素,暂时写死
在这里插入图片描述
继续走到11426行继续写死
在这里插入图片描述
下一个元素的生成,继续跟进去

在这里插入图片描述
返回的就是[0,0],写死

继续走,走到12122行,第6个元素的生成入口:
在这里插入图片描述
和第5个的逻辑一样,返回同样的结果[0,0]

继续走,12198行,这里是最前面的那个地方生成的16位数,然后截取前4位元素生成的数组,就作为128数组的第7个元素。

一直跟到11158行,128数组的第9位元素的生成入口(写死):
在这里插入图片描述
一直跟,知道跟到11745行,前面的都可以写死,这里是生成128的第13位元素,这里先定义位undefined,后面再来给这个元素赋值
在这里插入图片描述
一直跟,后面的几个是storage的属性通过这个方法生成20位的数组,可以直接写死,缺点就是不能英语并发:
在这里插入图片描述
一直无脑跟发到这里,这里生成的四位数组也可以直接写死:
在这里插入图片描述
再继续跟一直到11634行,给第13位元素赋值,直接把他得出的值写死即可
在这里插入图片描述
再继续跟一直到11424行,这里对128数组进行切割,提取出前面填充的元素
在这里插入图片描述
12478行这里是将上面的这个数组生成一个新的数组(里面的元素不在包含数组)
在这里插入图片描述
又继续跟,跟到11922行,这里先是生成一个37位数组,然后再将37位数组变成32位数组:

在这里插入图片描述
再继续跟,这里传入上面计算出来的32为数组,和32为计算出来的16位数组,计算得到一个16位数组,这里扣代码的时候会相互此案方法名同名,需要改一下方法名:
在这里插入图片描述
在跟到10441行,这里又是生成一个16位数组
在这里插入图片描述
继续跟到10335行,将上面生成的两个16位数组交叉组合成一个新的32为数组
在这里插入图片描述
再继续,一直到10431行,这里是将一个定义行的全局变量加在前面处理过的128数组末尾,最后生成一个数字
在这里插入图片描述
然后再把得出的那个数字计算出一个数组后加在这个大数组数组的末尾
在这里插入图片描述
继续,这里是那前面的那个时间戳来计算得出一个值,注意别用错了
在这里插入图片描述
同上,
在这里插入图片描述
继续走,一直到11047行,使用之前使用时间戳计算出来的值来计算得出一个数字:
在这里插入图片描述
继续,同上,得出第四个与时间有关的数字:
在这里插入图片描述
继续,将这四个数字组成一个4位数组(顺序就是上面计算出来的顺序)然后转换成一个16为数组:
在这里插入图片描述
继续走,然后将这个数组与一个字符串的第一个字符(这里我先将他写死)进行异或计算;
在这里插入图片描述
使用计算后的数字生成一段字符串:
在这里插入图片描述
然后下一步,上面的字符串,128数组最后的模样,最后那个交叉生成的哪个32位数字(注意"最后的模样",)生成最终cookie,扣代码环节到此结束(呼~)
在这里插入图片描述

总结

综上所得,没有一点创作细胞,写,写,写个锤子。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值