闲来无事看到某个nft接口为了防止接口被重复调用做了签名校验,抱着学习的心态破解一下
f12查看请求头参数,发现每次接口携带不同sign参数,由前端加密生成,下面开始破解sign。
定位sign生成的地方,全局搜索sign
可以看出u.default.md5(d+e+r+a+"1.0")就是生成sign的方法了,接下来断点查看每个参数如何生成的,然后执行加密函数就可以获取到sign
断点后可以看到d是固定值,e是从某个接口返回的最终存在本地,r为时间戳newDate().getTime()/取整获得,1e3其实就是10的三次方,a的值由s函数获得,所以接下来就要获取e跟a了
2.获取a
在s函数处打断点,进入对应js文件
复制这个加密函数在控制台执行一下,发现可以直接执行,执行结果就是上面参数a的值,本地建一个js文件,把这个加密函数放进去
3.获取e
之前断点看到如果本地没有存储secret就调用g函数获取,所以首先删除本地存储的secret,在g函数处打个断点,再进入到对应js
可以看到没有额外的请求头参数,get请求,直接丢到地址栏获取
到现在已经可以获取到全部的参数了,接下来找到加密函数,复制到本地调用就行了3.找加密函数之前断点看到sign由u.default.md5(d+e+r+a+"1.0")生成,在这行断点,进入加密函数,图中外面包裹的就是它的加密函数了,整个复制下来放本地因为我们是直接调用就把t.exports改成return就行
最后看下本地写入的js文件
4.postman测试
大功告成!
(本教程仅供学习,切勿用于非法用途)
预览时标签不可点收录于合集#个上一篇下一篇