admin 管理员组

文章数量: 887017

猿人学第5题

猿人学第5题

  • 分析请求
  • 加密参数
    • 分析cookie里的两个加密参数
    • 分析密钥
    • 分析url里的两个加密参数
  • 扣代码

本文仅供大家学习

  • 1 分析请求
  • 2 加密参数
  • 3 扣代码

分析请求


这是题目,要求是热度最高的前五名的和。按F12,看看请求的包


我请求了两页,请求参数只有两个,m和f



从这里看不出啥东西,题目提示cookie只保存50s,那肯定是cookie里加密了
,多次请求发现cookie里有两个值加密了,一个是m值,还有一个
是RM4hZBv0dDon443M


把两次的url和cookie拿出来分析

url:=1647409778035&f=1647409777000
//url
//下面是cookie,只拿了加密部分的参数
cookie:
m=9c69e65879573f20085d7a2771a87a41; 
RM4hZBv0dDon443M=0+F9b7iseRE50ASrEbzE1RVCHX8I9iwkMYl4v8yXmT25uSL7v5sZO8Tx4XsMGnX6WU5sckvCyre6WXlxyC89Ey+IDowTvIxSX6Hc0PuCNue1UZCigkJVi9GUdQ0HyTfV/mCLCcFnkfFJ2eiV1oHHXTo0IrZf8Sf6GsYKXZGZIaZ0jn/gJgfIxiQQAQ3l6/Mo80bW3HzI+MvuoEgkgzUQcMG0A5c1qEm45Ki2XSV2fmk=
url: =1647409932219&f=1647409931000
//url
//下面是cookie,只拿了加密部分的参数
cookie:m=81618ecb71d36db642ec4f95076fb7c1; RM4hZBv0dDon443M=BSypJaqxtyJ7yRDTjWMxnrnuZa8S7apgFyan/e7GgJyQy01Nd2TIQQe9+QWaThPoaedwulWcjYn8sCBkbIRROcWH3zxVTOIXJ9iaekAN1KT3hprQaewfaAsLUDf7AL4tMS80JrVwwswA8MBsCfuD+eGhkQtV2+MoGWUV7WrSwwZch9c7pJQeSP7vSVaPMo7WWzzdRcwdf/BaISCkSDN5MzNvz+d2urG1w/01OSHDx08=

cookie设置一般是加载的时候,我们可以发现,在打开F12的时候有一段嘲讽的话,这里面有猫腻。

加密参数

上面找到了4个参数,url里两个类似时间戳的m和f,还有cookie里的两个加密参数m和RM4hZBv0dDon443M

分析cookie里的两个加密参数


进入VM里面,会发现是一大段混淆,也和题目说的一样,应该就是这里进行加密,试试搜索RM4hZBv0dDon443M,

一个都没有,试试m的话太多了,试试m=

好,找到了RM4hZBv0dDon443M,它是使用字符串拼接来的,下断点,cookie赋值要重新刷新,刷新一下

这里就是RM4hZBv0dDon443M生成的地方,进去这里断点断住之后不会立即给它赋值,跳过几次就有值了
控制台输出_0x4e96b4是window

继续找到它是怎么来的,搜索这个’_$’

一目了然,RM4hZBv0dDon443M就是AES的ECB加密出来的,那么找明文和密钥

这种模式的加密,第一个参数就是明文,后面接着是密钥,最后是一些配置
明文是一个数组toString()来的,密钥是window里的【‘_qF’】,
接着找这个明文数组怎么来的,


搜索这个数组,都打上断点,

五次添加,第3次添加后会打印两句话,但第4的内容已经有了,而且它加密的地方在最后一次是变化的,这里是一个天坑,慢慢找

_$Wa = _0x12eaf3();
_0x3d0f3f[_$Fe] = 'm=' + _0x474032(_$Wa) + ';\x20path=/';
_0x4e96b4['_$pr']['push'](_0x474032(_$Wa));

这个方法添加的字符串,每次都是加密的,_0x474032这个方法就是加密方法了,这个方法慢慢扣

一个一个扣就行,

分析密钥


直接搜索找到密钥,打断点,刷新,放开断点,控制台输出_0x4e96b4[‘_$is’],

_0x4e96b4['btoa'](_0x4e96b4['_$is'])['slice'](0x0, 0x10)

这个就是密钥了,将_0x4e96b4[‘_$is’]的结果使用base64编码一下,在取它的前16位

分析url里的两个加密参数

打开网页

m就是加密密钥的那段_0x4e96b4['_ i s ′ ] , f 是 w i n d o w . is'],f是window. is′],f是window._zw[23],

_$Wa = _0x12eaf3();
f = _$Wa;
f是最开始的时间戳,就是为了计时的,50秒cookie失效

扣代码

这里提几个小坑,大坑自己填

_0x4e96b4[_$UH[0x260]][_$UH[0x8]]['DONE']


分析大坑的时候,可以hook看它是的结果和明文

//hook代码
(function(){var kk_0x474032 = _0x474032;_0x474032 = function(e) {var kkk = kk_0x474032(e);console.log("明文:", e,"加密:",kkk );console.log("_0x4e96b4['_$6_']:" + _0x4e96b4['_$6_'])console.log("_0x4e96b4['_$tT']:" + _0x4e96b4['_$tT'])console.log("_0x4e96b4['_$Jy']:" + _0x4e96b4['_$Jy'])return kkk;}
})()

大坑就是

_0x4e96b4['_$6_']
_0x4e96b4['_$tT']
_0x4e96b4['_$Jy']
这几个的值会变,大胆猜测后面怎么变得

本文标签: 猿人学第5题