好友
阅读权限25
听众
最后登录1970-1-1
|
本帖最后由 Aircraftcomman5 于 2025-1-10 12:59 编辑
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关.本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
目标网址:aHR0cHM6Ly96Yy1wYWltYWkudGFvYmFvLmNvbS93b3cvcG0vZGVmYXVsdC9wYy80YjgwZmE/JnNjbT0yMDE0MDY0Ny5qdWxhbmcucG0uc2VtJmFfa2V5d29yZGlkPTUyNjExNjA1OTc0NCZiZF92aWQ9MTA4MzkwMzg4MTY4NzEzMDIwODcmcGFnZT0y
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
操作步骤:
1. 定位参数
2. 分析参数
3. 分析包
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
跟栈
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
前言
此次,逆向中,所需参数有三个,cookie , 时间戳 ,sign
第一步:
1.1 打开目标网址,分页发包,查看所需的数据包,根据图片里的步骤,我们就可以找到 我们所要逆向的 sign
1.2 点击启动器,进入最上面,第二个栈,我们开始跟栈找寻sign
(第一个栈断不下来,不过也没必要非要在第一个栈下断,目的是要找到所需参数)
1.3 进入之后,下断点,根据1.1进行一个分页发包,
在根据图片里的步骤,找寻到目标,虽然找到了,目标参数但是,
周围给予的信息太不明显,所以我们向上跟栈
第二步:
2.1 根据图中步骤依次进行操作,到达指定位置,在这个过程中,可能会有一些干扰信息但,
经过多次调试,发现,sign到图中所在的栈就消失了,所以猜测sign值可能就是在此处某一步跳转之后完成加密,按照图中步骤,只保留这个断点其余断点释放掉
2.1.1 分析第上图第四步到第五步的理由,
从图中我们看到,4.1,n = this,(this是指当前作用域下,而他里面的值,猜测是某个函数,或变量,或原型,之类赋值给他),
但四处找寻却找不到在哪里,但我们将鼠标放在this上面,看到 步骤1 此时this里面指向了c,然后再根据步骤2-4 可以看到sign 存放在了c里面,
所以就猜测sign就是 c 里面生成的 但是此时我们所处的位置是在 c.prototype.__processRequest 也就是c的原型里,但是在这这文件里有没有生成sign ,
我们不知道,尽管this里面有sign,但他会不会是在另一个文件里导入进来的,所以就保持怀疑的心继续向上跟栈,到了第五步
2.2 言归正传(第五步处) 保留断点之后进行一次分页发包将断点,
断在此处,加以分析2.2.1我们这次单步调试一步一步走,
参数就在这走的过程中自己就会一一展示出来
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
单步调试
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第三步:
根据 2.2 在此处一直单步调试,不要怕麻烦,因为很快就会看到第一个参数的生成
3.1 单步执行到这里,就是其中一个参数token,他的流程我们可以大概知道,
先将this.options赋值给e ,在return中进行一个三元表达式,将最终的值给予e.token在返回
3.2 我们继续单步调试到return看他做了那些操作,
可以看到第一次判断给了一个undefiend,也就是false,然后就走的步骤2,a方法处,
传入了S,是一个字符串,然后我们继续单步调试,就走进了a里面
3.3 分析a可以知道,a里面是个正则表达式,他将浏览器cookie传入进行了某个操作,
选中之后可以看到,是取出了指定的值,在往下就可以看到return处又一个三元表达,
那肯定就是返回了t[1]
3.4 然后我们继续单步执行,就到了 3.2 处看到了他将返回的数据进行切分又赋值给了e.token,
最后就是我们要的参数之一
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第四步:
4.1我们还是继续单步调试,虽然速度有点慢,但可以清晰的看到每一步
4.2 单步调试一直到这里c.prototype.__processRequestUrl,在这里面一直执行就会到sign的加密处,
所以我们可以试试向下看,因为这是多次调试出来的,并且,它们都在同一个地方所以直接看到这个地方的结尾
4.3 上图有些我给它折叠起来了,看着不杂乱,所以我们现在,直接在sign处下段,
然后移动到此断点,查看内容,然后我们将这个包执行完,将此处的sign与发送完毕的包的sign对比,
可以看到内容一致,那么我们就可以确定 p 就是我们需要的密文,那么接下来我们就开始,扣取代码,
打印出sign
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
代码的扣取和调用
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第五步:
5.1 这里我们还会继续分析代码参数组成以及代码扣取、调用
5.2 我们找到了sign ,它是由p 生成的,那么就可以知道,p是在某处定义了,所以我们向上找,
因为肯定是先定义后使用,步骤2就是我们要找的p,这得多亏作用域,因为p在步骤3里只有一个,
超出步骤3,就无法使用了,那么可以知道sign使用的就是这个p
5.3 我们扣取出p放到Code里进行对p的分析,扣取完毕后我们返回浏览器,对这个函数p尾部下断点,查看值的生成
5.4 下完断点后我们重新分页发包,让断点到此处,我们从内往外看,先看函数的返回值,
然后与 sign:p 的值进行对比,之后再看传入p的参数,可以看到函数的返回值,与sign:p的值是一致的,
而返回值,所加密的参数已经用红色箭头标记出来
5.5 我们在来看传入的参数,token我们在单步调试第三步已经说明了它的生成,
这里的token和 第三步的token是一样的,大家有兴趣的可以自己对比对比,
a是时间戳,s多次调试时一个固定的字符串,n.data就是我们的表单数据里面的page就是我们当前所在的页数,
他们用“&”连接之后传入到5.3的头部
5.6 扣取的代码会报错是因为参数的缺少,
而我们在5.5已经分析完毕,所以我们可以自己创建,
也可以回到浏览器扣取,这里我扣取的是浏览器器的小小改动一下就可以用
5.7 我们来看一下最终的效果,显然结果是对的,那么到此sign的加密就结束了
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
数据包Cookie分析
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第六步:
6.1 对于这个站虽然扣取出了代码和加密参数,但如果不是多次调试,和猜想实践,就会造成少扣取,打击信心,命名代码扣了很多,但最后组合,结果不是很理想
6.2 在单步调试第三步我们看到token是由Cookie里面取的,那么我们就知道,在最终代码Cookie是必不可少的
6.3 那么多次调试发现问题出在数据包,我们回到开发者工具,网络界面,在左上角我们清楚当前站的Cookie来看看是不是少东西了,有没有不一样的数据包
6.4 发现又出现了很多不一样的包,我们直接点击第二个来看他的载荷、响应、Cookie,
前两个基本不是很重要,重点就是Cookie发现他返回了Cookie,
我们直接再看第五个数据包也就是我们的目标数据包
6.4.1 发现在第五个目标数据包中Cookie携带了6.4响应的Cookie并且响应成功,所以就可以知道,在组合代码时,
6.3响应的Cookie必不可少,既是请求的组成也是加密sign必不可少的参数
6.4.2 而可以看到6.3因为没有携带响应的的cookie,获取的数据是令牌为空
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总结
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
所有的参数都已经分析完毕关键就在于Cookie的获取,sign加密需要,且,请求时也需要携带不然会获取不到数据,从而让我们抓耳挠腮
同时,在sign加密时要看清载荷的表单数据的格式,不然加密的密文也是不正确
另外,还有荷载里面的时间戳也需要放到请求里,不然也会获取数据失败
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
最后,感谢大家的观看,内容如果有哪里说的不对。
请各位大佬给我纠正,给我建议,谢谢大家。
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|