声明
本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
逆向目标
目标:智慧树扫码登录,接口使用了WebSocket通信协议
主页:aHR0cHM6Ly9wYXNzcG9ydC56aGlodWlzaHUuY29tL2xvZ2luI3FyQ29kZUxvZ2lu
WebSocket简介
WebSocket是一种在单个TCP连接上进行全双工通信的协议,WebSocket使得客户端和服务器之间的数据交换变得更加简单。在WebSocketAPI中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
WebSocket协议简称为WS或者WSS(WebSocketSecure),其发送请求的URL以ws://或者wss://开头,WSS是WS的加密版本,类似于HTTP与HTTPS。
WebSocket协议的最大特点就是:服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。与HTTP的对比如下图所示:
抓包分析
来到智慧树的扫码登录页面,抓包选中WS,用来筛选WebSocket请求,如下图所示:
其中有一些比较特别的参数,是HTTP/HTTPS请求中没有的:
Upgrade:websocket:表明这是WebSocket类型请求;
Sec-WebSocket-Version:告诉服务器所使用的WebsocketDraft(协议版本),必须是13;
Sec-WebSocket-Extensions:协议扩展,某类协议可能支持多个扩展,通过它可以实现协议增强;
Sec-WebSocket-Key:是WebSocket客户端发送的一个base64编码的密文,是浏览器随机生成的,要求服务端必须返回一个对应加密的Sec-WebSocket-Accept应答,否则客户端会抛出ErrorduringWebSockethandshake错误,并关闭连接。
我们先扫码登录一遍,再选择Messages选项卡,可以看到有一些数据交互,其中绿色的箭头是客户端发送给服务器的数据,红色箭头是服务器响应返回给客户端的数据,如下图所示:
我们观察一下整个交互过程,当我们打开