charles刷分微信跳一跳小程序对https的理解

以前以为只要安装了https 客户端与服务端的数据会被加密就安全了

事实上 只要任意一款抓包工具 并伪造证书 就可以解密这个被所谓https加密的数据

如 可以下载charles的根证书 作为伪造服务端的证书

https原理无非就是客户端的SSL/TLS根据服务端传回客户端证书中的公钥对随机值进行加密 服务端用私钥对公钥加密后的随机值 进行解密 得到解密之后的随机值

就是最终客户端和服务端 进行交互时候对称加密的的密钥

但是利用中间人攻击 伪造服务端的证书 建立双向通信 可以打破https加密的这套机制

https://gist.github.com/feix/6dd1f62a54c5efa10f1e1c24f8efc417

https://github.com/chucklqsun/WxJumpHelper/blob/master/wx_t1t_hack.js

https://juejin.im/entry/5904345ab123db3ee4755ebb

当然需要刷分 要运行node js的代码 需要安装node的环境 和npm

https://nodejs.org/en/download/

http://drubear.github.io/2015/12/22/Mac-OS-X%E5%AE%89%E8%A3%85Node-js%E3%80%81npm/

实践办法:

  1. 下载最新 charlesproxy
  2. 启动 charlesproxy
  3. 配置代理: 设置 > 无线局域网 > 配置代理 > 手动 > IP:电脑 ip,端口: 8888
  4. 导入 https 证书: 浏览器访问 http://chls.pro/ssl 下载安装证书
  5. 启动跳一跳小程序
  6. 去 charlesproxy 里查看抓到的请求, https://mp.weixin.qq.com/wxagame/wxagame_init 路径的请求,请求体里就包含 session_id