1 - 初识 - 第二届猿人学web端攻防赛https://match2023.yuanrenxue.cn/topic/1通过翻页抓包分析很容易找到逆向点是请求体的token,另外翻页时除了数据包还请求了一个图片包,通过fidder抓包或者python逆向可以看到是返回一个时间戳,可能有用。
既然是逆向请求体的token,那就直接下包含url的xhr断点
很轻松的断到加密点,往上跟两步就到了生成token值的地方。
可以看出加密点主要由f来的,而f是由a生成的,而a是函数传的参数。
我们尝试把全部代码扣下来,把a变成全局变量,放到浏览器控制台里运行下,看一看这个函数是否执行了,能不能拿到变成全局变量的a。
可以看到,函数被执行了。那么就可以把主体加密函数拿出来,外部调用了。
编写主体加密函数并验证结果
第一个错误,浏览器里跟进去看看。是在一i定义的变量里,而且定义i变量的这个函数里面没有其它变量定义,和影响其它变量值的逻辑运算。按住ctrl点下i发现只有一处调用了i,那就好办了,在调用i的地方打上断点看i的值是多少,刷新几次看是否变化。
i值是定值没有变化,回头看i定义的地方也发现0xbb76994f在控制台里运行就是3145111887,那就好办了,直接把定义i函数改写。
改写后来到这个错误,这个一看就是请求发包,直接删掉!这一部完事拿到了结果,但是不对
放浏览器里运行下可以拿到正确结果,那就说明缺少环境。这种ob混淆是不会混淆常用的window,document,navigator等环境的。先搜一个,看都用了什么环境
搜window到这儿delete window和window=0x0,这在浏览器里是无效的,那么直接把这两行代码删掉。
补环境我习惯直接上三件套,补完用到的环境发现还是没拿到正确结果,别灰心,我们的代码在浏览器里是可以拿到正确结果的,可能有环境里的元素被调用了,我们上下代理试试。
获取了location里href的值,直接控制台里运行location.href,补上!
补上了href就大功告成了。幸福来的太突然。
js代码就3000多行,改写了一处js,补了几个环境,整体来看这个js逆向还是比较简单的。
剩下的就是py里调用了,这里就不写了。记得把写死的时间戳删掉,get_data返加的j就是请求体,可以直接在py里让data=这个返回值。