js逆向技巧(持续更新)

本文探讨了JavaScript逆向工程中的防止改包方法,包括请求参数加密、请求体加密和签名验证。同时,介绍了测试思路,如寻找入口、调试分析和模拟执行,并详细讲解了各个步骤。此外,还提到了全局搜索指定参数、调用分析和Hook等技术在实战中的应用。
摘要由CSDN通过智能技术生成

防止改包方式

主要是这么几个方面

1. 请求参数和路径的加密(靶场未实现)
  • 如果原始请求是GET请求,或防止访问者获取请求路径,通常会将用户实际的请求路径和GET请求参数封装都封装为POST请求的请求体,通过加解密网关再还原为原始GET请求传入后端分布式服务上。 在APP中比较常见。

    表现的形式通常为: 抓包后发现访问任何功能都是同一路径,并且请求全为密文

2. 请求体的加密
  • 这类在纯web中最常见, 通常仅仅加密接口请求的请求体内容,但有以下几类加密问题。
    • 使用固定密钥 --- 顾名思义, 这种情况一般JS中会存储密钥, 属于最简单的一种
    • 使用动态密钥 --- JS中不存储,一般用户第一次请求后将密钥加密写入COOKIE或本地存储中, 这类加密追踪难度较大。
    • 对称加密 --- 加解密数据包内容同一套密钥
    • 非对称加密 --- 加密一套解密一套
    • 算法 --- 算法就不是特别固定了, 常见的诸如AES RSA等, 也遇到过使用国密算法或一些冷门算法。
3. 签名
  • 签名的应用也十分广泛,app,小程序和现在许多web中均存在,签名的构成主要是以下几点
    • RequestId --- 为了防止重放攻击, 客户端生成随机RequestId 服务端接收后保存至Redis中, 如果再次接收到此RequestID, 则视为非法请求
    • 时间戳 --- 添加时间戳的超时时间, 一旦超时, 原始数据包失效
    • 签名本身 --- 通过 requestId + 原始请求体或请求参数 + 时间戳 + 盐值合并生成哈希值 从而保证以上参数的有效性和唯一性
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_1136014935

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值