前言
WebSocket是一种全双工通信协议,即客户端可以向服务端发送请求,服务端也可以主动向客户端推送数据。这样的特点,使得它在一些实时性要求比较高的场景效果斐然(比如微信朋友圈实时通知、在线协同编辑等)。主流浏览器以及一些常见服务端通信框架(Tomcat、Spring、Jetty、WebSphere、WebLogic等)都对WebSocket进行了技术支持。
本文主要讲解如何让哥斯拉支持Websocket协议的shell。
添加SocketClient
首先,需要在util中,添加SocketClient类,实现“打开连接”、“发送数据”、“接收数据”、“关闭连接”等功能
Shell生成界面修改
添加"WS Shell类型"下拉框
添加选项
整体设计完成后,界面如下图所示
算法实现
在src/main/java/shells/cryptions/JavaAes/中新建JavaAesBase64WebSocket.java并定义算法名称
修改init方法,实现SocketClient.sendMsg发送payload
修改shells.payloads.java.JavaShell#evalFunc。添加SocketClient.sendMsg发送data数据
Shell代码实现
这里可以根据wsMemShell模板作为参考,进行修改。
参考模板:https://github.com/veo/wsMemShell
这里需要注意,要添加setDefaultMaxTextMessageBufferSize和setDefaultMaxBinaryMessageBufferSize方法。解决payload传输的大小限制问题。
这里需要注意,要添加setDefaultMaxTextMessageBufferSize和setDefaultMaxBinaryMessageBufferSize方法。解决payload传输的大小限制问题。
container.setDefaultMaxTextMessageBufferSize(52428800);
container.setDefaultMaxBinaryMessageBufferSize(52428800);
功能预览
shell连接时,填写url为ws://开头。例如 ws://192.168.136.72:8080/ws.jsp
加密器选择JAVA_AES_BASE64_WebSocket
通过抓包,可看到通信协议及流量
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)