大家好,新年第一帖。
背景:在测试某src时发现修改请求体报错,修改url也报错,根本没办法测逻辑、越权,故寻找sign加密方式,然后用python写成脚本,重算sign方便后面测试。
正文:
1、网站打开如下
(F12,直接看app.js)
2、首先查询,看下数据包
(请求头中,最重要的就是 Gateway-Sign-Parameters,他就是sign)
3、拿着第二步的参数 Gateway-Sign-Parameters
去第一步的 app.js里查询
(查到两个,都打断点)
4、然后点击查询后在 第 12488行卡住了。查询发现 Gateway-Sign-Parameters 已经被算出来了
所以我们断点要再往前点下,因为 从 12488行看出来 Gateway-Sign-Parameters 是 n 传递的,所以我卡上一步 12487,看看n怎么来的
5、卡住12487行,点击进入函数
发现跳转到 13206行
这行是返回 s ,接下来我们要找s,往下看
可以看到 s()函数,这里面就是我们想要的计算sign方式了
5、我们卡住s()函数的 返回值 13249行
这就生成了 sign。
依照上图这里详细解释下sign计算
13245行的s 是固定格式
{
"paramsStr": "client_id=htsk_hxg_client&gateway_body_context={\"storeFanName\":\"\",\"name\":\"\",\"phone\":\"\",\"pageNum\":1,\"pageSize\":10,\"groupNo\":\"\"}&method=/user/fanc/get-page-fan&sign_method=md5×tamp=2023-02-01 11:49:24&",
"signStr": "client_idhtsk_hxg_clientgateway_body_context{\"storeFanName\":\"\",\"name\":\"\",\"phone\":\"\",\"pageNum\":1,\"pageSize\":10,\"groupNo\":\"\"}method/user/fanc/get-page-fansign_methodmd5timestamp2023-02-01 11:49:24"
}
这里面
merhod=当前网站路径
timestamp=当前时间
gateway_body_context=post请求body
然后把他们变为字符串(去除符合),就将s变为u(13246行)
然后还需要在u,前后加字符串(Htskxzjs1)变为h
然后把这个h,做md5加密
就获得了sign
脚本如下
time_data = '2023-01-31 16:1:5'
url_suoxie = '/user/fanc/update-fan'
body = '{"headImg":""}'
#只需要修改上面三个即可
aa = 'Htskxzjs1client_idhtsk_hxg_clientgateway_body_context' + body + 'method'+ url_suoxie + 'sign_methodmd5timestamp' + time_data +'Htskxzjs1'
import hashlib
# 创建MD5对象,可以直接传入要加密的数据
m = hashlib.md5(aa.encode(encoding='utf-8'))
print('3D' + m.hexdigest().upper()) # 转化为16进制打印md5值
(还有get请求大同小异,想了解的多了可以在写一个)
希望大佬多多指点,留言都会看得
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2023-2-1 12:00
被阿苗090800编辑
,原因: