管理案例网站,wordpress官网中文版下载,青秀区网站建设,wordpress三合一模板文章目录 前言加密参数的处理步骤加密参数的定位方法搜索断点XHR断点DOM断点EVENT断点 hook 前言
当我们对网络请求进行抓包分析之后#xff0c;需要用开发者工具对加密参数进行全局搜索。当搜索不到加密参数的时候#xff0c;应该采取什么解决方法去定位。
还有一个应用场… 文章目录 前言加密参数的处理步骤加密参数的定位方法搜索断点XHR断点DOM断点EVENT断点 hook 前言
当我们对网络请求进行抓包分析之后需要用开发者工具对加密参数进行全局搜索。当搜索不到加密参数的时候应该采取什么解决方法去定位。
还有一个应用场景是我们发现请求服务端的时候有一个cookie而这个cookie又不是服务端返回的那么它很有可能就是JS生成的怎么快速定位这个cookie生成的地方。
加密参数的处理步骤
在JS逆向的过程中当遇到有加密参数的时候不是上来就找函数入口进行分析这样的话会走很多弯路。简单描述一下这个过程的一般流程下面的步骤很重要可以帮你少走很多弯路。
重放攻击删参数进行重放攻击。当你遇到一个加密参数可以尝试删除这个参数的情况下进行重放攻击如果成功的话说明该参数并不是必须的可以省去分析的过程。如果重放攻击无效再查看参数是不是某个接口的返回值如果不是接口返回值直接在页面源码里面搜索看这个参数是否是页面的固定值(关于这一点我之前就走过一次弯路参数直 接固定在页面里面了结果我用各种方法愣是没找着)如果需要定位cookie优先看包的返回内容是否有set-cookie
加密参数的定位方法
如果前面的五个步骤都进行了尝试还找不到参数来源的话就需要通过逆向分析的方法去找到参数的来源。一般来说有下面几种方案。
搜索 开发者工具里面一共有两个搜索这两个搜索的作用域不一样一个只能搜索到当前的页面元素第二个是全局的搜索可以搜索到所有的内容。
使用这种方案定位加密参数的位置会比较准确但是搜索到的位置会比较多需要进行筛选。
断点
XHR断点
以网易云音乐为例 当我点击播放按钮的时候可以看到这么一条请求携带的返回数据里面有音乐的url下载链接。如果我们能够模拟这个请求那么就可以做到下载网易云音乐的目的。 这个请求里面需要携带两个参数params和encSecKey 那么我们就可以在source面板的XHR断点里面添加一个包含params的断点当请求的内容里面包含这个字符串的时候就会断下来。 这个时候我们点击播放可以看到程序已经断下来了并且arguments的值就是我们想要追踪的加密参数那么这个时候就可以通过调用堆栈向上去找到加密参数的生成位置了。
DOM断点
所谓的DOM断点其实就是通过给页面的DOM节点附带的事件添加断点。 我们可以通过页面的选择器定位到这个按钮然后右键break on下断当这个节点或者属性发生改变的时候程序会断下但是在这个案例里面这个DOM断点并不会生效。
这个断点的应用场景是页面的元素或者属性发生改变的时候在登陆的场景里面用的比较多。
EVENT断点 首先用选择器选择播放按钮然后在EventListener里面有这个元素的所有的事件 点开click事件里面有这个元素的点击事件不过选项还是比较多不太容易筛选。 然后也可以在source页面的Event Listener Breakpoints里面把需要下断的事件打勾就可以直接断下来。
hook
我们也可以通过hook的方式通过hook一些关键函数来获取到一些信息下面都是一些HOOK了以后对逆向有帮助的点
json
cookie
window attr
eval/Function
websocket以json为例可以去Hook下面两个函数
JSON.stringify
JSON.parse通过HOOK这两个方法打印参数就可以拿到所有的json相关的字符串也就相当于在网站里面加入了一个日志系统。其他几个HOOK点的应用也是类型。
关于cookie的hook
如果想要快速找到cookie算法的生成位置可以对cookie进行hook这个是最常见的hook方案 由于 cookie 是document里面的属性所以我们可以修改 document这个对象中 cookie属性的描述符。
(function () {use strict;var cookie_cache document.cookie;Object.defineProperty(document, cookie, {get: function () {return cookie_cache;},set: function (val) {console.log(Setting cookie, val);// 填写cookie名if (val.indexOf(填cookie名) ! -1) {debugger;}var cookie val.split(;)[0];var ncookie cookie.split();var flag false;var cache cookie_cache.split(; );cache cache.map(function (a) {if (a.split()[0] ncookie[0]) {flag true;return cookie;}return a;})cookie_cache cache.join(; );if (!flag) {cookie_cache cookie ; ;}return cookie_cache;}});
})();上面的代码对对象属性的cookie进行了hook当获取cookie的时候会打印cookie的值当设置cookie的时候如果满足要求那么就会产生debugger断点断到cookie生成的位置从而就可以去分析加密算法了。