天天看点

攻防比赛_猿人学攻防比赛第一题记录

实战地址:

http://match.yuanrenxue.com/match/1
           

打开f12 随即出现了无限debugger反调试

攻防比赛_猿人学攻防比赛第一题记录

在debugger所在右击出现的菜单栏点击never pause here 去掉断点

攻防比赛_猿人学攻防比赛第一题记录

之后清空控制面板。 开始抓包分析,发现只有一个加密参数m

攻防比赛_猿人学攻防比赛第一题记录

全局搜索m=,m: 发现结果 有点多。也没发现什么。。。

攻防比赛_猿人学攻防比赛第一题记录

最后通过ajax请求的回调栈找了线索

攻防比赛_猿人学攻防比赛第一题记录
攻防比赛_猿人学攻防比赛第一题记录

复制出来格式化此处代码

攻防比赛_猿人学攻防比赛第一题记录

看到这问题范围就缩小了。。。可以明确oo0O0 函数 和 window.f是关键

扣出这部分代码放到node js 中运行。

攻防比赛_猿人学攻防比赛第一题记录

然后本着缺啥补啥的原则继续补下去

攻防比赛_猿人学攻防比赛第一题记录

缺失的东西可以去控制台找譬如 document.f 值应为多少

攻防比赛_猿人学攻防比赛第一题记录

因为不停的打印永不言弃。。。淹没自己的运行结果。。。所以我直接在那句话打了断点。防止干扰视线。

攻防比赛_猿人学攻防比赛第一题记录

继续分析oo0O0 函数,发现最后有个eval

攻防比赛_猿人学攻防比赛第一题记录

而且函数最后也只是返回了空

可以到控制台或者node中输出一下

atob(window['b']) , J('0x0', ']dQW'), J('0x1', 'GTu!') , '\x27' + mw + '\x27')
           
攻防比赛_猿人学攻防比赛第一题记录

格式化分析atob(window['b']) 返回的代码发现了window.f的藏身之地。。哈哈哈,

攻防比赛_猿人学攻防比赛第一题记录

再次回看刚刚输出的。replace   mwqqppz 等关键字。。。嗯。。

window.f的值为hex_md5(mwqqppz),   而mwqqppz被replace成了oo0O0 
           
函数传入的时间戳字符串参数,到此即可修改代码为
           
攻防比赛_猿人学攻防比赛第一题记录

最后放到一个js文件中供调用(直接用字符串传入出现了编码错误。换成文件调用成功了)。成品如下

攻防比赛_猿人学攻防比赛第一题记录

成功!