0x00 前言
趁五一结束前再更新一篇文章,我突然意识到我好像很久没发关于逆向的文章了,所以今天就来更一篇针对某鱼的sign分析,难度为简单,初学者可以看一看这篇文章。
0x01 正文
打开某鱼:
打开F12并搜点东西:
随便复制一个商品名,然后确认一下调的是哪个接口:
可以看到sign,将请求转为py代码,看看是不是sign作验证的。
复制curl格式:
访问https://curlconverter.com/
:
将刚刚复制的curl语句粘贴到框里:
复制下来并执行:
调用成功,现在修改一下sign的最后一位:
执行:
确认是通过sign进行验证的,回到chrome查看请求参数:
参数有点多,直接搜固定参数appKey:
可以看到sign,打个断点验证一下是不是这里:
确认是这里,分析一下代码:
sign是用下面这段代码生成的:
k = i(d.token + "&" + j + "&" + h + "&" + c.data)
看一下d.token是什么:
c570e4c7ea83f2e23cf914ed494e3ed7
查一下请求有没有携带这个值:
看来是cookie,键为_m_h5_tk
,我们把cookie清除了看看是哪个接口设置的这个键:
刷新:
确认是我们获取商品的那个接口设置的_m_h5_tk,继续看下一个参数:
j为时间戳:
j = (new Date).getTime()
h:
h为固定值appKey:
c.data:
放掉查看请求:
确认c.data为请求体,最后看一下代码把拼接后的字符串传递给的i函数内部做了什么:
说实话,这看着就像md5加密,拿上面的数据拼接加密看看是否是请求的sign。
_m_h5_tk
:47a31b745f9a96f2343a66aca3e03f72
j:1746346593869
h:34839810
c.data:{"pageNumber":1,"keyword":"手机","fromFilter":false,"rowsPerPage":30,"sortValue":"","sortField":"","customDistance":"","gps":"","propValueStr":{},"customGps":"","searchReqFromPage":"pcSearch","extraFilterValue":"{}","userPositionJson":"{}"}
拼接:
47a31b745f9a96f2343a66aca3e03f72&1746346593869&34839810&{"pageNumber":1,"keyword":"手机","fromFilter":false,"rowsPerPage":30,"sortValue":"","sortField":"","customDistance":"","gps":"","propValueStr":{},"customGps":"","searchReqFromPage":"pcSearch","extraFilterValue":"{}","userPositionJson":"{}"}
放掉看一下请求的sign:
0c89316a2479ddce8fe42bffaa941bbf
md5加密刚刚拼接的字符串:
验证为md5加密。
脚本编写:
将搜索的关键字修改为电脑测试一下:
执行:
成功请求。
原文始发于微信公众号(Spade sec):JS逆向系列20-某鱼sign分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论