猿人学第五题请求参数和cookie加密OB混淆解析
网址:https://match.yuanrenxue.cn/match/5
解析流程请求参数mf有点像时间戳,但是却不一样,cookie中m参数可以不用携带,但是RM4hZBv0dDon443M需要携带
老方法,我们用hook的形式去获取cookie,多放行几次,直到获取到正确的目标
这个_0x4e96b4[‘_$ss’]就是我们需要的目标了,但是_0x4e96b4竟然是个window对象,我们在尝试用hook获取一下
hook之后追栈
很明显_0x29dd83[_$UH[0x1f]]就是我们需要的目标
抠出来 稍微解一下,是个aes加密,接下来呢就是扣代码
_$Ww 的值由 _0x4e96b4['_$pr'] 转换为字符串后经过 utf-8 编码得到,其与 key 值 _0x4e96b4['_$qF'] 都是数组
搜索_0x4e96b4['_$qF']会发现他是传入了一个类似时间戳一样的东西进行base64编码后获取前面16位
1_0x4e96b4['_$qF'] = CryptoJS[ ...
猿人学第15题wasm解析
网址:https://match.yuanrenxue.cn/match/12
接口:https://match.yuanrenxue.cn/api/match/12?page=1
解析流程m参数加密
追栈,t1是时间戳除2,t2是时间戳除2减随机数,q是加载wasm中的encode方法
python 也是可以调用wasm的,我们先需要把这个文件下载下来
然后用pywasm模块加载,在执行里面的方法,和执行js有点类似
12vm = pywasm.load("./main.wasm")result = vm.exec("encode", [t1, t2])
完整代码
123456timestamp = int(time.time()) * 1000t1 = int(timestamp / 1000 / 2)t2 = int(timestamp / 1000 / 2 - 2)vm = pywasm.load("./main.wasm")result = vm.exec("encode", [t1, ...
猿人学第13题入门级cookie加密
网址:https://match.yuanrenxue.cn/match/12
接口:https://match.yuanrenxue.cn/api/match/12?page=1
解析流程抓包,cookie有个字段有加密
发现前面一个包返回的html就是cookie该字段的内容,直接获取到,然后放入请求中就可以获取到了
1234567891011121314requests.utils.add_dict_to_cookiejar(session.cookies, {"sessionid": "zkfllfb1xh7mog7qq3k3759npyuc4shj"}) headers = { "User-Agent": "yuanrenxue.project", } url = "http://match.yuanrenxue.com/match/13" r = session.get(url) re ...
猿人学第七题动态字体加密
网址:https://match.yuanrenxue.cn/match/7
接口:https://match.yuanrenxue.cn/api/match/7?page=2
解析流程直接抓包看接口, 返回的woff参数貌似是加密的,竟然是字体加密,那肯定会有个字体包,看一下字体接口
果不其然,这是个woff参数拼接的就是这个字体包
我们直接把字体包写入到本地
12345response = requests.get('https://match.yuanrenxue.cn/api/match/7?page={}'.format(i), cookies=cookies, headers=headers).json()data_dict = response['data']font_file = base64.b64decode(response['woff'])with open('match_07.ttf', 'wb') as f: f.write( ...
猿人学第四题图片样式干扰和偏移值加密解析
网址:https://match.yuanrenxue.cn/match/4
解析流程正常抓包,多请求几次,没有其它加密,问题出在响应数据里面
我们把info拿出来看一下,以为分割,切看来看一下,10组数据,对应应该是浏览器里面的十组数字
再从每一组里面拆开来,每组里面图片数量不等,和浏览器里面也对不上,复制一份用在线网页展示一下
现在可以理清的是,每次请求会返回十组数据,每组有数量不同的图片base64编码,我们回到浏览器查看一下
发现浏览器中也是数量不对 但顺序是对的,对不上的图片做了样式隐藏,所以我们要找一下样式是怎么处理的
直接添加xhr断点,跳到reques这里来
看一下这段代码,j_key的话是接口返回的key和value进行base64加密然后在进行md5加密,然后去掉=再加上·,这里的意思是,如果接口中返回的数据里面的img_number的值等于,那么就加上display: none;,将其隐藏
123var j_key = '.' + hex_md5(btoa(data.key + data.value).replace( ...
猿人学第三题headers字段顺序和session解析
网址:https://match.yuanrenxue.cn/match/3
解析流程我们直接抓包,发现cookie并不会发生变化,也没有需要解析的请求体,我们直接复制响应再python里面运行一下
发现了一大堆类似类似于jsfuck一样的混淆
我们用fiddler再试一下,发现fiddler也能正常获取响应
我们再fiddler上重新发起响应看一下,发现竟然返回的和我们再pycharm上的一样
怀疑可能跟上面的jssm请求有关,我们直接在fiddler上同时发起两个请求试一下
这一次正常返回了响应,我们在py里面用session把这两个都请求一下
需要注意的是,headers不要跟着session一起请求,百度了一下说是跟着一起请求会打乱headers字段里面的顺序,然后又拿不到正确的响应,需要在请求之前 用session.headers = headers设置请求头
123456789101112131415161718192021222324252627282930313233343536373839404142434445import requests ...
猿人学第二题cookie加密ob混淆内存爆破
网址:https://match.yuanrenxue.cn/match/2
解析流程直接看cookie,其它正常,这个m参数看上去跟第一题类似
cookie我们用hook脚本来获取,断到了 我们跟进去看一下
看一下这段代码
拆开来是这样的
我们再控制台上打印几个关键字,不难看出这两个就是我们想要的
1_0x554467['eNpYK'](_0x50116b, _0x3f0354),_0x3f0354
我们先看_0x554467[‘eNpYK’]这个方法,这一页的大部门方法都是我们要扣取的
调试的时候会出现卡死或者这种报错,就是内存溢出直接报错的情况
我们可以把代码拿出来,再浏览器控制台中的源代码->代码段中,再代码最上面加上debugger;运行调试
再这一段代码中会用正则检测上面的代码是否被格式化,如果被格式化就会执行下面的死循环,我们直接将这一块不格式化就行
1this['XxpyjG'] = function() {return 'newState';},
同样的还会 ...
猿人学第一题md5加密js混淆解析
网址:https://match.yuanrenxue.cn/match/1
解析流程请求头和cookie都很正常,直接看m参数,一段加密 + 一个|再加一个类似时间戳的东西,直接从发起程序开始追栈
这里有个定时器debugger,直接永不暂停过掉他
再看到第四个方法时,发现一个html夹杂着一段js代码,我们将其抠出来
先找个格式化工具,美化一下代码
然后再把eval代码抠出来,找个解混淆工具解一下
补到这里就很明显了
12_0x2268f9:Date['parse'](new Date()) + (16798545 + -72936737 + 156138192)oo0O0(_0x2268f9)
接下来我们直接看oo0O0方法
该方法同样在html页面里面,我们也可以扣下来
接下来就是扣代码补齐,需要注意的是node.js中没有atob,我们需要用md5来实现,可以导包,也可以找一个现成的md5代码来实现
1234567891011121314151617181920212223242526272829303132333435363738 ...
问财搜索hexin-v参数ob混淆解析
网址:http://www.iwencai.com/
解析流程使用这个接口获取搜索结果
请求头中hexin-v参数是我们需要的,经过测试它和cookie中的v参数可以相同,所以我们直接hook cookie
找到cookie正确的参数v,我们追栈查看
到o方法这里,t参数是我们要的,再往上跟
直接看rt.update方法
到这基本就找到加密的地方了
接下来就是扣代码了,一步一步扣,需要补上window和document,其中serverTimeNow可以是定值
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221 ...
识货app免更新过拦截器获取免加密数据
app:识货v7.20.1
接口:https://sh-api.shihuo.cn/daga/search/goods/v1?minVersion=15670&clientCode=%7Bholder%7D
&v=7.20.1&channel=huawei&device=Pixel%203a&platform=android×tamp=1684553856312&tok
en=c0df5113c555827f6e0c294b227d2b7b
解析流程首先打开app,发现需要更新,我们先尝试一下断网进入,先清除缓存,在断网进入,发现可以过更新,但是好像抓不到包
先用jadx打开app进行反编译,看一下源码,先看下能不能过掉强制更新,搜索关键字版本,发现UpdateDialog方法是进行版本更新的主要方法,我们可以直接让这个方法返回为空,就可以过掉更新
使用frida hook UpdateDialog方法,不返回任何数据,可以直接过掉更新,需要注意的是 ...