【JS逆向百例-1】某艺术平台逆向分析

本文详细描述了如何通过抓包分析识别并逆向一个Web接口中的X-Token参数,利用MD5算法加密过程,并提供Python代码示例模拟加密过程获取正确返回数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

声明

前言

抓包分析

逆向分析

Js实现

​编辑

Python调用


 

 

声明

本文章中所有内容仅供学习交流使用,不用于其他任何目的,相关网址和数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!若有侵权,请联系删除!

前言

  • 网址:94ca6772640973d1ef3bcdbfbfd139f5
  • 加密接口:3e0eb11c3e9b9b02d928daeeda83b26c

 

抓包分析

不能避免的第一步,先按F12打开控制台。因为这个网站可以翻页,所以我们可以点击下一页进行接口触发

d3c4fda0f66d4422af44036b06fc99eb.png

然后找到带有数据的接口

db7d51e7829748c1bccb3dd29990f23a.png

很明显,数据就藏在data里。接下来,我们依次对请求头->查询参数->响应->cookie进行分析

1->请求头

a5eb2b2746e541cf889443e43db18dcf.png

点开标头,找到请求标头,可以看到其中Signature、Token、X-Token都是一些不常见的参数,并且可以惊奇的发现是不带cookie的哈哈哈,也是非常的友好啊,直接就是省去一步,接下来分析这三个参数·        

  • Signature多找几个接口观察请求头可以发现它竟然是不变的,那么它就是写死的
  • Token可以看到它的值为null,多找几个接口观察请求头可以发现也是如此,所以它也是写死的
  • X-Token多找几个接口观察请求头可以发现,它是在动态变化的,所以百分之九十九点九它要进行逆向分析

2->查询参数

b5184d94a4c84a03b93db1430c336b10.png

上面同样的套路,可以发现flag是不变的,而page明显是翻页的页码,per_page也是不变的,timestamp是时间戳,这个要进行逆向

3->响应和cookie

前面分析已经知道,cookie是不用带的,所以不用管,而响应的数据里也没有进行加密,也不用管,又省事啦


所以,本次逆向目标参数:X-Token、timestamp


逆向分析

X-Token参数

加密位置定位的方式有很多种,因为X-Token参数名比较少见,所以可以通过关键字搜索来定位,用shift+ctrl+f打开搜索,输入X-Token

f2f404b133d7402da19627749ca6ea2f.png

很好,可以发现只有一个文件出现了这个参数,接下来我们点进去,打上断点,重新触发接口,如果能够断住,那么就说明我们定位成功了

178efe8bc5fb43d6b47a6f36482abffe.png

 

可以看到成功断住了,并且前面有我们要的timestamp,继续跟X-Token参数,进入到B方法中,打上断点

a5e60a55934f4f01b088bb1daae036b2.png

可以看到,这是一个md5算法,但不知道是不是标准的,此时我们可以调用这个方法用‘1’进行测试

139de4d11b524f49ac2a88eaa9c50943.png

67bfcba05e894f6997321049545e3921.png

可以发现,这个算法加密的结果和标准算法加密的结果一致,那它就是一个标准的md5算法,省下了扣代码的步骤,接下来只需要分析传递的参数就完事了,回到一开始的断点

ebc95fb73af342bdb72559a2a38c0b8c.png

dbdeffbe741e497e9e68ad236d050102.png

可以看到这里的e就是传递的参数,我们现在分析一下它:

e = 'api/product/getproductsearch?flag=top&page=4&per_page=12&timestamp=1714562258107&key=6rnrdpjjv6wz2sspxqeibesov1itxddc'

// api/product/getproductsearch? -> 接口
// flag=top&page=4&per_page=12&timestamp=1714562258107 -> 参数

前面两部分是可以直接得到的,接下来看一下后面那部分key

f4a014d6553645b99825b0a8081c66ed.png这里的Xi是前面写死的,所以我们也可以直接写死,到这里,可以说逆向已经完成了,接下来看一下代码的实现

 

Js实现

var crypto = require('crypto-js')

let timestamp = (new Date).getTime()

e = 'api/product/getproductsearch?flag=top&page=4&per_page=12&timestamp=1714562258107&key=6rnrdpjjv6wz2sspxqeibesov1itxddc'

console.log(crypto.MD5(e).toString());

成功加密

10da353f87974e34a33626df89f2adba.png

Python调用

 这里只展示部分代码



import requests
import execjs

with open('./2.加密.js', 'r', encoding='utf-8') as f:
    js_code = execjs.compile(f.read())

headers = {
}
url = "pass"
params = {
    "flag": "top",
    "page": "2",
    "per_page": "12",
    "timestamp": "1714298967230"
}

result = js_code.call('get_data', 2)

params['timestamp'] = result['timestamp']
headers['x-token'] = result['pwd']


response = requests.get(url, headers=headers, params=params)

print(response.text)
print(response)

正确返回数据

d18deea7c51243889c657662f3554974.png

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值